in register_dtd() do not leak the elements hash
svn path=/trunk/; revision=15959
This commit is contained in:
parent
81a2feddab
commit
88dd585d23
|
@ -773,6 +773,25 @@ static xml_ns_t* make_xml_hier(gchar* elem_name,
|
|||
return new;
|
||||
}
|
||||
|
||||
static gboolean free_both(gpointer k, gpointer v, gpointer p _U_) {
|
||||
g_free(k);
|
||||
g_free(v);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean free_elements(gpointer k _U_, gpointer v, gpointer p _U_) {
|
||||
xml_ns_t* e = v;
|
||||
|
||||
g_free(e->name);
|
||||
g_hash_table_foreach_remove(e->attributes,free_both,NULL);
|
||||
g_hash_table_destroy(e->attributes);
|
||||
g_hash_table_destroy(e->elements);
|
||||
g_ptr_array_free(e->element_names,TRUE);
|
||||
g_free(e);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void register_dtd(dtd_build_data_t* dtd_data, GString* errors) {
|
||||
GHashTable* elements = g_hash_table_new(g_str_hash,g_str_equal);
|
||||
gchar* root_name = NULL;
|
||||
|
@ -952,6 +971,8 @@ next_attribute:
|
|||
|
||||
g_hash_table_insert(xml_ns.elements,root_element->name,root_element);
|
||||
|
||||
g_hash_table_foreach_remove(elements,free_elements,NULL);
|
||||
|
||||
destroy_dtd_data(dtd_data);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue