From bf2249a1855b6bebe0b3528b4d5321a1ebe4b9e7 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Sat, 19 Apr 2008 23:08:20 +0100 Subject: Do not copy node data if it's not there If the source JsonNode does not contain data yet, do not try and copy it. --- json-glib/json-node.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/json-glib/json-node.c b/json-glib/json-node.c index eacf357..035dd2e 100644 --- a/json-glib/json-node.c +++ b/json-glib/json-node.c @@ -136,17 +136,26 @@ json_node_copy (JsonNode *node) switch (copy->type) { case JSON_NODE_OBJECT: - copy->data.object = json_object_ref (node->data.object); + if (node->data.object) + copy->data.object = json_object_ref (node->data.object); break; + case JSON_NODE_ARRAY: - copy->data.array = json_array_ref (node->data.array); + if (node->data.array) + copy->data.array = json_array_ref (node->data.array); break; + case JSON_NODE_VALUE: - g_value_init (&(copy->data.value), G_VALUE_TYPE (&(node->data.value))); - g_value_copy (&(node->data.value), &(copy->data.value)); + if (G_VALUE_TYPE (&(node->data.value)) != G_TYPE_INVALID) + { + g_value_init (&(copy->data.value), G_VALUE_TYPE (&(node->data.value))); + g_value_copy (&(node->data.value), &(copy->data.value)); + } break; + case JSON_NODE_NULL: break; + default: g_assert_not_reached (); } -- cgit v1.2.1