diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2009-08-12 12:29:34 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2009-08-12 12:29:34 +0100 |
commit | 8a7e0f381dc7e49745680df92ebb428f18bf4832 (patch) | |
tree | 56213c738a91805871415242185f1928a1d9062f /json-glib/json-object.c | |
parent | ad638149c2cc1a17c0d2ad1482d932c8940c64e0 (diff) | |
download | json-glib-8a7e0f381dc7e49745680df92ebb428f18bf4832.tar.gz |
Do not sanitize the object member's name
JsonObject sanitizes the name of the member to replace all
characters defined by G_STR_DELIMITERS with '_'. This is
absolutely brain damaged, since a member name can be any
valid JSON string.
Obviously, if a member name maps to a GObject property is
entirely up to the GObject code to decide whether to sanitize
the member name or not.
Diffstat (limited to 'json-glib/json-object.c')
-rw-r--r-- | json-glib/json-object.c | 35 |
1 files changed, 6 insertions, 29 deletions
diff --git a/json-glib/json-object.c b/json-glib/json-object.c index 0cc6d55..d1bbe98 100644 --- a/json-glib/json-object.c +++ b/json-glib/json-object.c @@ -139,10 +139,9 @@ object_set_member_internal (JsonObject *object, const gchar *member_name, JsonNode *node) { - gchar *name; - - name = g_strdelimit (g_strdup (member_name), G_STR_DELIMITERS, '_'); - g_hash_table_replace (object->members, name, node); + g_hash_table_replace (object->members, + g_strdup (member_name), + node); } /** @@ -164,8 +163,6 @@ json_object_add_member (JsonObject *object, const gchar *member_name, JsonNode *node) { - gchar *name; - g_return_if_fail (object != NULL); g_return_if_fail (member_name != NULL); g_return_if_fail (node != NULL); @@ -523,16 +520,7 @@ static inline JsonNode * object_get_member_internal (JsonObject *object, const gchar *member_name) { - JsonNode *retval; - gchar *name; - - name = g_strdelimit (g_strdup (member_name), G_STR_DELIMITERS, '_'); - - retval = g_hash_table_lookup (object->members, name); - - g_free (name); - - return retval; + return g_hash_table_lookup (object->members, member_name); } /** @@ -778,17 +766,10 @@ gboolean json_object_has_member (JsonObject *object, const gchar *member_name) { - gchar *name; - gboolean retval; - g_return_val_if_fail (object != NULL, FALSE); g_return_val_if_fail (member_name != NULL, FALSE); - name = g_strdelimit (g_strdup (member_name), G_STR_DELIMITERS, '_'); - retval = (g_hash_table_lookup (object->members, name) != NULL); - g_free (name); - - return retval; + return (g_hash_table_lookup (object->members, member_name) != NULL); } /** @@ -818,14 +799,10 @@ void json_object_remove_member (JsonObject *object, const gchar *member_name) { - gchar *name; - g_return_if_fail (object != NULL); g_return_if_fail (member_name != NULL); - name = g_strdelimit (g_strdup (member_name), G_STR_DELIMITERS, '_'); - g_hash_table_remove (object->members, name); - g_free (name); + g_hash_table_remove (object->members, member_name); } typedef struct _ForeachClosure ForeachClosure; |