diff options
author | Akira TAGOH <akira@tagoh.org> | 2015-12-03 11:55:17 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2015-12-03 12:27:47 +0900 |
commit | 779ce2fa4018e4647a744b67767faf490a1eca27 (patch) | |
tree | 8068a2d24b516927f299538c0ba6bee0d0fe6f62 | |
parent | 95b57cf4e77e0dba8b91944d96ddaa810abe5c55 (diff) |
Fix memory leaks
-rw-r--r-- | liblangtag/lt-relation-db.c | 12 | ||||
-rw-r--r-- | liblangtag/lt-tag.c | 3 | ||||
-rw-r--r-- | tests/tag.c | 2 |
3 files changed, 12 insertions, 5 deletions
diff --git a/liblangtag/lt-relation-db.c b/liblangtag/lt-relation-db.c index 3451032..8aa1b31 100644 --- a/liblangtag/lt-relation-db.c +++ b/liblangtag/lt-relation-db.c @@ -52,8 +52,8 @@ lt_relation_db_parse(lt_relation_db_t *relationdb, xmlXPathObjectPtr xobj = NULL; lt_error_t *err = NULL; int i, n; - lt_lang_db_t *langdb; - lt_script_db_t *scriptdb; + lt_lang_db_t *langdb = NULL; + lt_script_db_t *scriptdb = NULL; lt_return_val_if_fail (relationdb != NULL, FALSE); @@ -111,7 +111,7 @@ lt_relation_db_parse(lt_relation_db_t *relationdb, (const char *)type); if (!l) alloced = TRUE; - l = lt_list_append(l, lt_script_ref(os), (lt_destroy_func_t)lt_script_unref); + l = lt_list_append(l, os, (lt_destroy_func_t)lt_script_unref); if (alloced) { lt_mem_add_ref((lt_mem_t *)relationdb->relation_l_s_entries, l, (lt_destroy_func_t)lt_list_free); @@ -122,7 +122,7 @@ lt_relation_db_parse(lt_relation_db_t *relationdb, l = lt_trie_lookup(relationdb->relation_s_l_entries, p); if (!l) alloced = TRUE; - l = lt_list_append(l, lt_lang_ref(ol), (lt_destroy_func_t)lt_lang_unref); + l = lt_list_append(l, ol, (lt_destroy_func_t)lt_lang_unref); if (alloced) { lt_mem_add_ref((lt_mem_t *)relationdb->relation_s_l_entries, l, (lt_destroy_func_t)lt_list_free); @@ -145,6 +145,10 @@ lt_relation_db_parse(lt_relation_db_t *relationdb, lt_error_unref(err); retval = FALSE; } + if (langdb) + lt_lang_db_unref(langdb); + if (scriptdb) + lt_script_db_unref(scriptdb); if (xobj) xmlXPathFreeObject(xobj); if (xctxt) diff --git a/liblangtag/lt-tag.c b/liblangtag/lt-tag.c index 6b2f3a3..56b8a46 100644 --- a/liblangtag/lt-tag.c +++ b/liblangtag/lt-tag.c @@ -1317,8 +1317,8 @@ _lt_tag_canonicalize(lt_tag_t *tag, lt_string_append_printf(string, "%s-", prefix); lt_extlang_unref(e); } - lt_extlang_db_unref(edb); } + lt_extlang_db_unref(edb); lt_string_append(string, lt_lang_get_better_tag(tag->language)); if (tag->extlang) { @@ -2296,6 +2296,7 @@ lt_tag_transform(lt_tag_t *tag, bail2: if (xctxt) xmlXPathFreeContext(xctxt); + lt_lang_unref(und); lt_xml_unref(xml); } LT_STMT_END; bail1: diff --git a/tests/tag.c b/tests/tag.c index 30fba88..5340836 100644 --- a/tests/tag.c +++ b/tests/tag.c @@ -118,6 +118,8 @@ main(int argc, printf("%s ", lt_script_get_tag(script)); } printf("\n"); + lt_list_free(ll); + lt_relation_db_unref(db); } } else { goto help; |