diff options
author | Emmanuele Bassi <ebassi@linux.intel.com> | 2011-01-10 11:16:17 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@linux.intel.com> | 2011-01-10 11:16:17 +0000 |
commit | f89a50e24d2088061eb7d975db7e6f39beaf853d (patch) | |
tree | ea92ef6de8a3b2a8e8791c23c7213b91665a66aa /json-glib/json-object.c | |
parent | e828cba563f2584e848994935478a7ffd21728df (diff) | |
download | json-glib-f89a50e24d2088061eb7d975db7e6f39beaf853d.tar.gz |
object: Do some more validation in set_member()
Check if we're setting the same node, to avoid a needless replace.
Diffstat (limited to 'json-glib/json-object.c')
-rw-r--r-- | json-glib/json-object.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/json-glib/json-object.c b/json-glib/json-object.c index de91ebb..0b5875f 100644 --- a/json-glib/json-object.c +++ b/json-glib/json-object.c @@ -188,10 +188,20 @@ json_object_set_member (JsonObject *object, const gchar *member_name, JsonNode *node) { + JsonNode *old_node; + g_return_if_fail (object != NULL); g_return_if_fail (member_name != NULL); g_return_if_fail (node != NULL); + old_node = g_hash_table_lookup (object->members, member_name); + if (old_node == NULL) + goto set_member; + + if (old_node == node) + return; + +set_member: object_set_member_internal (object, member_name, node); } |