From e519fc43ba0616ee0e80cd86720d1e0c21bf2a8b Mon Sep 17 00:00:00 2001 From: Andrew Sidwell Date: Thu, 3 Jul 2008 16:43:21 +0000 Subject: Derefcount things which should be derefcounted. svn path=/trunk/hubbub/; revision=4502 --- src/treebuilder/in_caption.c | 4 ++++ src/treebuilder/in_cell.c | 8 ++++++++ src/treebuilder/in_column_group.c | 4 ++++ src/treebuilder/in_foreign_content.c | 3 +++ src/treebuilder/in_frameset.c | 4 ++++ src/treebuilder/in_row.c | 7 +++++++ src/treebuilder/in_select.c | 24 ++++++++++++++++++++++++ src/treebuilder/in_table.c | 4 ++++ src/treebuilder/in_table_body.c | 12 ++++++++++++ 9 files changed, 70 insertions(+) (limited to 'src') 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) { -- cgit v1.2.3