summaryrefslogtreecommitdiff
path: root/src/treebuilder
diff options
context:
space:
mode:
authorAndrew Sidwell <andy@entai.co.uk>2008-07-03 16:43:21 +0000
committerAndrew Sidwell <andy@entai.co.uk>2008-07-03 16:43:21 +0000
commite519fc43ba0616ee0e80cd86720d1e0c21bf2a8b (patch)
treedd573aeae88ac0689f1fd9b3d7b6dd9a281a6cdf /src/treebuilder
parent0bff00b4408d7296d1e5e940d8a5fd910c9fb283 (diff)
downloadlibhubbub-e519fc43ba0616ee0e80cd86720d1e0c21bf2a8b.tar.gz
libhubbub-e519fc43ba0616ee0e80cd86720d1e0c21bf2a8b.tar.bz2
Derefcount things which should be derefcounted.
svn path=/trunk/hubbub/; revision=4502
Diffstat (limited to 'src/treebuilder')
-rw-r--r--src/treebuilder/in_caption.c4
-rw-r--r--src/treebuilder/in_cell.c8
-rw-r--r--src/treebuilder/in_column_group.c4
-rw-r--r--src/treebuilder/in_foreign_content.c3
-rw-r--r--src/treebuilder/in_frameset.c4
-rw-r--r--src/treebuilder/in_row.c7
-rw-r--r--src/treebuilder/in_select.c24
-rw-r--r--src/treebuilder/in_table.c4
-rw-r--r--src/treebuilder/in_table_body.c12
9 files changed, 70 insertions, 0 deletions
diff --git a/src/treebuilder/in_caption.c b/src/treebuilder/in_caption.c
index e369e14..4f7fe21 100644
--- a/src/treebuilder/in_caption.c
+++ b/src/treebuilder/in_caption.c
@@ -90,6 +90,10 @@ bool handle_in_caption(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
clear_active_formatting_list_to_marker(treebuilder);
diff --git a/src/treebuilder/in_cell.c b/src/treebuilder/in_cell.c
index f44d6ae..969345f 100644
--- a/src/treebuilder/in_cell.c
+++ b/src/treebuilder/in_cell.c
@@ -42,6 +42,10 @@ static inline void close_cell(hubbub_treebuilder *treebuilder)
if (!element_stack_pop(treebuilder, &ns, &otype, &node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
clear_active_formatting_list_to_marker(treebuilder);
@@ -101,6 +105,10 @@ bool handle_in_cell(hubbub_treebuilder *treebuilder, const hubbub_token *token)
&ns, &otype, &node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
clear_active_formatting_list_to_marker(
diff --git a/src/treebuilder/in_column_group.c b/src/treebuilder/in_column_group.c
index 577e73d..07454ee 100644
--- a/src/treebuilder/in_column_group.c
+++ b/src/treebuilder/in_column_group.c
@@ -90,6 +90,10 @@ bool handle_in_column_group(hubbub_treebuilder *treebuilder,
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
+
treebuilder->context.mode = IN_TABLE;
}
diff --git a/src/treebuilder/in_foreign_content.c b/src/treebuilder/in_foreign_content.c
index 324a079..ba498af 100644
--- a/src/treebuilder/in_foreign_content.c
+++ b/src/treebuilder/in_foreign_content.c
@@ -104,6 +104,9 @@ bool handle_in_foreign_content(hubbub_treebuilder *treebuilder,
void *node;
element_stack_pop(treebuilder, &cur_node_ns,
&cur_node, &node);
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
cur_node_ns = current_node_ns(treebuilder);
}
diff --git a/src/treebuilder/in_frameset.c b/src/treebuilder/in_frameset.c
index ca61910..f46431c 100644
--- a/src/treebuilder/in_frameset.c
+++ b/src/treebuilder/in_frameset.c
@@ -73,6 +73,10 @@ bool handle_in_frameset(hubbub_treebuilder *treebuilder,
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
+
if (type != FRAMESET)
treebuilder->context.mode = AFTER_FRAMESET;
} else {
diff --git a/src/treebuilder/in_row.c b/src/treebuilder/in_row.c
index 37c4b9d..fce03b9 100644
--- a/src/treebuilder/in_row.c
+++ b/src/treebuilder/in_row.c
@@ -33,6 +33,10 @@ static void table_clear_stack(hubbub_treebuilder *treebuilder)
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
+
cur_node = treebuilder->context.element_stack[
treebuilder->context.current_node].type;
}
@@ -60,6 +64,9 @@ static inline bool act_as_if_end_tag_tr(hubbub_treebuilder *treebuilder)
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(treebuilder->tree_handler->ctx,
+ node);
+
treebuilder->context.mode = IN_TABLE_BODY;
return true;
diff --git a/src/treebuilder/in_select.c b/src/treebuilder/in_select.c
index 4809237..df286ed 100644
--- a/src/treebuilder/in_select.c
+++ b/src/treebuilder/in_select.c
@@ -56,6 +56,10 @@ bool handle_in_select(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
insert_element(treebuilder, &token->data.tag);
@@ -65,6 +69,10 @@ bool handle_in_select(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
if (current_node(treebuilder) == OPTGROUP) {
@@ -72,6 +80,10 @@ bool handle_in_select(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
insert_element(treebuilder, &token->data.tag);
@@ -104,6 +116,10 @@ bool handle_in_select(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
if (current_node(treebuilder) == OPTGROUP) {
@@ -111,6 +127,10 @@ bool handle_in_select(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
} else {
/** \todo parse error */
}
@@ -120,6 +140,10 @@ bool handle_in_select(hubbub_treebuilder *treebuilder,
&node)) {
/** \todo errors */
}
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
} else {
/** \todo parse error */
}
diff --git a/src/treebuilder/in_table.c b/src/treebuilder/in_table.c
index a648585..229eba1 100644
--- a/src/treebuilder/in_table.c
+++ b/src/treebuilder/in_table.c
@@ -28,6 +28,10 @@ static inline void clear_stack_table_context(hubbub_treebuilder *treebuilder)
while (type != TABLE && type != HTML) {
element_stack_pop(treebuilder, &ns, &type, &node);
+
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
}
return;
diff --git a/src/treebuilder/in_table_body.c b/src/treebuilder/in_table_body.c
index 6e151bd..997c4c1 100644
--- a/src/treebuilder/in_table_body.c
+++ b/src/treebuilder/in_table_body.c
@@ -34,6 +34,10 @@ static void table_clear_stack(hubbub_treebuilder *treebuilder)
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
+
cur_node = treebuilder->context.element_stack[
treebuilder->context.current_node].type;
}
@@ -65,6 +69,10 @@ static bool table_sub_start_or_table_end(hubbub_treebuilder *treebuilder)
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
+
treebuilder->context.mode = IN_TABLE;
return true;
@@ -146,6 +154,10 @@ bool handle_in_table_body(hubbub_treebuilder *treebuilder,
/** \todo errors */
}
+ treebuilder->tree_handler->unref_node(
+ treebuilder->tree_handler->ctx,
+ node);
+
treebuilder->context.mode = IN_TABLE;
}
} else if (type == TABLE) {