summaryrefslogtreecommitdiffstats
path: root/src/sord.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-04-27 21:21:27 +0000
committerDavid Robillard <d@drobilla.net>2011-04-27 21:21:27 +0000
commita57e86686e3143bd6e0873264a12a04cf7e9939d (patch)
treed3294898225e36512db4d4e75cab33ea80b7dc2c /src/sord.c
parentdb07db58db6d83f008a4714a238a99f7f4855c9a (diff)
downloadsord-a57e86686e3143bd6e0873264a12a04cf7e9939d.tar.gz
sord-a57e86686e3143bd6e0873264a12a04cf7e9939d.tar.bz2
sord-a57e86686e3143bd6e0873264a12a04cf7e9939d.zip
Fix memory leaks.
git-svn-id: http://svn.drobilla.net/sord/trunk@88 3d64ff67-21c5-427c-a301-fe4f08042e5a
Diffstat (limited to 'src/sord.c')
-rw-r--r--src/sord.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/sord.c b/src/sord.c
index 4a8d94c..9c193a0 100644
--- a/src/sord.c
+++ b/src/sord.c
@@ -797,7 +797,7 @@ sord_new_literal_node(SordWorld world, SordNode datatype,
const char* lang, uint8_t lang_len)
{
SordNode node = sord_new_node(SORD_LITERAL, str, str_len + 1);
- node->datatype = datatype;
+ node->datatype = sord_node_copy(datatype);
node->lang = sord_intern_lang(world, lang);
return node;
}
@@ -945,6 +945,7 @@ sord_node_free(SordWorld world, SordNode node)
fprintf(stderr, "Failed to remove literal from hash.\n");
return;
}
+ sord_node_free(world, node->datatype);
} else {
if (!g_hash_table_remove(world->names, node->buf)) {
fprintf(stderr, "Failed to remove resource from hash.\n");
@@ -959,7 +960,9 @@ sord_node_free(SordWorld world, SordNode node)
SordNode
sord_node_copy(SordNode node)
{
- ++node->refs;
+ if (node) {
+ ++node->refs;
+ }
return node;
}