diff options
author | David Robillard <d@drobilla.net> | 2011-05-24 18:55:13 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-05-24 18:55:13 +0000 |
commit | 6dd5b9a2a403347dccdfaa769427fd7ca4955695 (patch) | |
tree | a17757775d5c51c71f4145680ea298757be1043f /src/sord.c | |
parent | f44b324a36ce7d6238ed58eb67702e6a821deec7 (diff) | |
download | sord-6dd5b9a2a403347dccdfaa769427fd7ca4955695.tar.gz sord-6dd5b9a2a403347dccdfaa769427fd7ca4955695.tar.bz2 sord-6dd5b9a2a403347dccdfaa769427fd7ca4955695.zip |
Free all nodes on world destruction (fix memory leaks).
git-svn-id: http://svn.drobilla.net/sord/trunk@132 3d64ff67-21c5-427c-a301-fe4f08042e5a
Diffstat (limited to 'src/sord.c')
-rw-r--r-- | src/sord.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -169,9 +169,22 @@ sord_world_new(void) return world; } +static void +free_hash_entry(void* key, void* value, void* user_data) +{ + SordNode* node = (SordNode*)value; + if (node->node.type == SERD_LITERAL) { + sord_node_free((SordWorld*)user_data, node->datatype); + } + g_free((uint8_t*)node->node.buf); + free(node); +} + void sord_world_free(SordWorld* world) { + g_hash_table_foreach(world->literals, free_hash_entry, world); + g_hash_table_foreach(world->names, free_hash_entry, world); g_hash_table_unref(world->names); g_hash_table_unref(world->langs); g_hash_table_unref(world->literals); |