diff options
author | David Robillard <d@drobilla.net> | 2018-05-12 13:01:10 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2018-11-25 22:12:46 +0100 |
commit | 54ceea1115d9dfd77542d9b3551277b499c41d1f (patch) | |
tree | 6591887a86c7686e087bfa7b3eeaf4d4b04c331f /src | |
parent | 95e4ca4d49f8aa8e736d4a6743bf961c93cf7f69 (diff) | |
download | serd-54ceea1115d9dfd77542d9b3551277b499c41d1f.tar.gz serd-54ceea1115d9dfd77542d9b3551277b499c41d1f.tar.bz2 serd-54ceea1115d9dfd77542d9b3551277b499c41d1f.zip |
Avoid copying nodes when equivalent prefixes are set
Diffstat (limited to 'src')
-rw-r--r-- | src/env.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -120,9 +120,11 @@ serd_env_add(SerdEnv* env, const char* name_str = serd_node_get_string(name); SerdPrefix* const prefix = serd_env_find(env, name_str, name->n_bytes); if (prefix) { - SerdNode* old_prefix_uri = prefix->uri; - prefix->uri = serd_node_copy(uri); - serd_node_free(old_prefix_uri); + if (!serd_node_equals(prefix->uri, uri)) { + SerdNode* old_prefix_uri = prefix->uri; + prefix->uri = serd_node_copy(uri); + serd_node_free(old_prefix_uri); + } } else { env->prefixes = (SerdPrefix*)realloc( env->prefixes, (++env->n_prefixes) * sizeof(SerdPrefix)); |