From 58dcf7ec029a25cb667311dc1912093ddba3dfaf Mon Sep 17 00:00:00 2001 From: lexborisov Date: Mon, 21 Nov 2016 14:07:37 +0300 Subject: [PATCH] Call destroy function for selectors list https://github.com/lexborisov/Modest/issues/3 --- examples/selectors/selectors_low_level.c | 10 +++++++--- source/modest/node/serialization.c | 2 +- source/mycss/entry.c | 1 + source/mycss/selectors/list.c | 12 ++++-------- source/myhtml/mystring.c | 2 +- 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/examples/selectors/selectors_low_level.c b/examples/selectors/selectors_low_level.c index c6a2afc..3c1272f 100644 --- a/examples/selectors/selectors_low_level.c +++ b/examples/selectors/selectors_low_level.c @@ -81,10 +81,8 @@ int main(int argc, const char * argv[]) modest_finder_t *finder = modest_finder_create_simple(html_tree, NULL); mycss_selectors_list_t *list = mycss_selectors_parse(css_entry->selectors, MyHTML_ENCODING_UTF_8, selector, strlen(selector), &out_status); - myhtml_collection_t *collection = modest_finder_by_selectors_list(finder, list, html_tree->node_html, NULL); - /* destroy Modest finder */ - modest_finder_destroy(finder, true); + myhtml_collection_t *collection = modest_finder_by_selectors_list(finder, list, html_tree->node_html, NULL); /* print result */ fprintf(stdout, "HTML Tree:\n"); @@ -103,6 +101,12 @@ int main(int argc, const char * argv[]) fprintf(stdout, "\n"); // destroy all + mycss_selectors_list_destroy(css_entry->selectors, list, true); + myhtml_collection_destroy(collection); + + /* destroy Modest finder */ + modest_finder_destroy(finder, true); + mycss_t *mycss = css_entry->mycss; mycss_entry_destroy(css_entry, true); mycss_destroy(mycss, true); diff --git a/source/modest/node/serialization.c b/source/modest/node/serialization.c index a2c1e65..0b6a23a 100644 --- a/source/modest/node/serialization.c +++ b/source/modest/node/serialization.c @@ -53,7 +53,7 @@ void modest_node_raw_serialization_callback(myhtml_utils_avl_tree_node_t* node, modest_node_serialization_context_t *ctx = context; modest_style_raw_declaration_t *raw_declr = node->value; - modest_node_raw_serialization_declaration(ctx->modest->mycss_entry, raw_declr->declaration, node->type, ctx->callback, ctx->context, &ctx->is_use); + modest_node_raw_serialization_declaration(ctx->modest->mycss_entry, raw_declr->declaration, (mycss_property_type_t)node->type, ctx->callback, ctx->context, &ctx->is_use); } bool modest_node_raw_serialization(modest_t* modest, modest_node_t* mnode, mycss_callback_serialization_f callback, void* context) diff --git a/source/mycss/entry.c b/source/mycss/entry.c index 6a203fe..e06bef9 100644 --- a/source/mycss/entry.c +++ b/source/mycss/entry.c @@ -115,6 +115,7 @@ mycss_status_t mycss_entry_init(mycss_t* mycss, mycss_entry_t* entry) mycss_status_t mycss_entry_clean(mycss_entry_t* entry) { + mcobject_clean(entry->mcobject_incoming_buffer); mycss_entry_parser_list_clean(entry->parser_list); /* CSS Modules */ diff --git a/source/mycss/selectors/list.c b/source/mycss/selectors/list.c index faf7374..4676dfe 100644 --- a/source/mycss/selectors/list.c +++ b/source/mycss/selectors/list.c @@ -46,14 +46,10 @@ mycss_selectors_list_t * mycss_selectors_list_destroy(mycss_selectors_t* selecto mycss_selectors_entry_t *sel_entry = selectors_list->entries_list[i].entry; while(sel_entry) { - if(sel_entry->next) { - sel_entry = sel_entry->next; - mycss_selectors_entry_destroy(entry->selectors, sel_entry->prev, true); - } - else { - mycss_selectors_entry_destroy(entry->selectors, sel_entry, true); - break; - } + mycss_selectors_entry_t *sel_entry_next = sel_entry->next; + mycss_selectors_entry_destroy(entry->selectors, sel_entry, true); + + sel_entry = sel_entry_next; } } diff --git a/source/myhtml/mystring.c b/source/myhtml/mystring.c index 994cc7f..a353e60 100644 --- a/source/myhtml/mystring.c +++ b/source/myhtml/mystring.c @@ -52,7 +52,7 @@ myhtml_string_t * myhtml_string_destroy(myhtml_string_t* str, bool destroy_obj) if(str == NULL) return NULL; - if(str->data && str->mchar && str->node_idx) + if(str->data && str->mchar) mchar_async_free(str->mchar, str->node_idx, str->data); if(destroy_obj && str) {