diff options
author | Emmanuele Bassi <ebassi@openedhand.com> | 2008-04-12 13:21:21 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@openedhand.com> | 2008-04-12 13:21:21 +0100 |
commit | 445a3f71d046abed4ff99e0ab4cd9cc8e047f5be (patch) | |
tree | 037fd38ec5de2a381c88181f8ab03ccd4fe9b4d0 /json-glib/json-node.c | |
parent | 4e826d9f209a8f68023bae54c91b2bbbb202a54a (diff) | |
download | json-glib-445a3f71d046abed4ff99e0ab4cd9cc8e047f5be.tar.gz |
Allow null nodes to return a value without a warning
Value nodes might contain 'null' as a valid value, so the fast accessors
should not barf out when encountering a JSON_NODE_NULL instead of the
expected JSON_NODE_VALUE.
Diffstat (limited to 'json-glib/json-node.c')
-rw-r--r-- | json-glib/json-node.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/json-glib/json-node.c b/json-glib/json-node.c index e147ad4..eacf357 100644 --- a/json-glib/json-node.c +++ b/json-glib/json-node.c @@ -492,7 +492,9 @@ G_CONST_RETURN gchar * json_node_get_string (JsonNode *node) { g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, NULL); + + if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) + return NULL; if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_STRING) return g_value_get_string (&(node->data.value)); @@ -513,7 +515,9 @@ gchar * json_node_dup_string (JsonNode *node) { g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, NULL); + + if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) + return NULL; if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_STRING) return g_value_dup_string (&(node->data.value)); @@ -563,7 +567,9 @@ gint json_node_get_int (JsonNode *node) { g_return_val_if_fail (node != NULL, 0); - g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, 0); + + if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) + return 0; if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_INT) return g_value_get_int (&(node->data.value)); @@ -613,7 +619,9 @@ gdouble json_node_get_double (JsonNode *node) { g_return_val_if_fail (node != NULL, 0.0); - g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, 0.0); + + if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) + return 0; if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_DOUBLE) return g_value_get_double (&(node->data.value)); @@ -663,11 +671,12 @@ gboolean json_node_get_boolean (JsonNode *node) { g_return_val_if_fail (node != NULL, FALSE); - g_return_val_if_fail (JSON_NODE_TYPE (node) == JSON_NODE_VALUE, FALSE); + + if (JSON_NODE_TYPE (node) == JSON_NODE_NULL) + return FALSE; if (G_VALUE_TYPE (&(node->data.value)) == G_TYPE_BOOLEAN) return g_value_get_boolean (&(node->data.value)); return FALSE; } - |