aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-05-11 23:31:59 +0000
committerDavid Robillard <d@drobilla.net>2011-05-11 23:31:59 +0000
commit126e208fa58bc787aa7e96990e83031dfcd463be (patch)
treef961dce5fe4e3bd675b29fb561bd1f2b3aa59a72
parent926f29ed81a34a50c9221a2d562119db84a136cb (diff)
downloadserd-126e208fa58bc787aa7e96990e83031dfcd463be.tar.gz
serd-126e208fa58bc787aa7e96990e83031dfcd463be.tar.bz2
serd-126e208fa58bc787aa7e96990e83031dfcd463be.zip
Fix crash when setting an identical namespace prefix.
git-svn-id: http://svn.drobilla.net/serd/trunk@169 490d8e77-9747-427b-9fa3-0b8f29cee8a0
-rw-r--r--src/env.c3
-rw-r--r--src/writer.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/env.c b/src/env.c
index 0d9bc128..26c7eb11 100644
--- a/src/env.c
+++ b/src/env.c
@@ -111,8 +111,9 @@ serd_env_add(SerdEnv* env,
assert(name && uri);
SerdPrefix* const prefix = serd_env_find(env, name->buf, name->n_chars);
if (prefix) {
- serd_node_free(&prefix->uri);
+ SerdNode old_prefix_uri = prefix->uri;
prefix->uri = serd_node_copy(uri);
+ serd_node_free(&old_prefix_uri);
} else {
env->prefixes = realloc(env->prefixes,
(++env->n_prefixes) * sizeof(SerdPrefix));
diff --git a/src/writer.c b/src/writer.c
index a9cdf6ac..13015d8c 100644
--- a/src/writer.c
+++ b/src/writer.c
@@ -31,7 +31,7 @@ typedef struct {
} WriteContext;
static const WriteContext WRITE_CONTEXT_NULL = {
- { 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}
+ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}
};
struct SerdWriterImpl {