summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira TAGOH <akira@tagoh.org>2015-12-03 11:55:17 +0900
committerAkira TAGOH <akira@tagoh.org>2015-12-03 12:27:47 +0900
commit779ce2fa4018e4647a744b67767faf490a1eca27 (patch)
tree8068a2d24b516927f299538c0ba6bee0d0fe6f62
parent95b57cf4e77e0dba8b91944d96ddaa810abe5c55 (diff)
Fix memory leaks
-rw-r--r--liblangtag/lt-relation-db.c12
-rw-r--r--liblangtag/lt-tag.c3
-rw-r--r--tests/tag.c2
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;