summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortallua <talluay@gmail.com>2021-04-06 00:18:47 +0900
committertallua <talluay@gmail.com>2021-04-06 00:18:47 +0900
commit7f798dee2db6c32c7fae23d238e7a806b16b0f08 (patch)
tree88a6ec69ff8405103932c90a4197381e6639f4d9
parent8c4deccd80b902eb1a95c43fbf58e5a82c343d53 (diff)
downloadjson-glib-7f798dee2db6c32c7fae23d238e7a806b16b0f08.tar.gz
set node->data pointer to null when unset
-rw-r--r--json-glib/json-node.c3
-rw-r--r--json-glib/tests/node.c18
2 files changed, 21 insertions, 0 deletions
diff --git a/json-glib/json-node.c b/json-glib/json-node.c
index a6898d9..0c8a675 100644
--- a/json-glib/json-node.c
+++ b/json-glib/json-node.c
@@ -143,16 +143,19 @@ json_node_unset (JsonNode *node)
case JSON_NODE_OBJECT:
if (node->data.object)
json_object_unref (node->data.object);
+ node->data.object = NULL;
break;
case JSON_NODE_ARRAY:
if (node->data.array)
json_array_unref (node->data.array);
+ //node->data.array = NULL;
break;
case JSON_NODE_VALUE:
if (node->data.value)
json_value_unref (node->data.value);
+ node->data.value = NULL;
break;
case JSON_NODE_NULL:
diff --git a/json-glib/tests/node.c b/json-glib/tests/node.c
index 80beb78..5b89db9 100644
--- a/json-glib/tests/node.c
+++ b/json-glib/tests/node.c
@@ -44,6 +44,22 @@ test_init_string (void)
json_node_free (node);
}
+/* Test that reinit used node */
+static void
+test_node_reinit (void)
+{
+ JsonNode *node = NULL;
+ JsonArray *array = NULL;
+
+ array = json_array_new ();
+ node = json_node_init_array (json_node_alloc (), array);
+
+ json_node_init_int(node, 1);
+
+ json_node_free (node);
+ json_array_unref (array);
+}
+
static void
test_copy_null (void)
{
@@ -545,6 +561,7 @@ test_immutable_parent (void)
g_test_trap_assert_stderr ("*Json-CRITICAL **: json_node_set_parent: *");
}
+
int
main (int argc,
char *argv[])
@@ -556,6 +573,7 @@ main (int argc,
g_test_add_func ("/nodes/init/boolean", test_init_boolean);
g_test_add_func ("/nodes/init/string", test_init_string);
g_test_add_func ("/nodes/init/null", test_null);
+ g_test_add_func ("/nodes/init/reinit", test_node_reinit);
g_test_add_func ("/nodes/copy/null", test_copy_null);
g_test_add_func ("/nodes/copy/value", test_copy_value);
g_test_add_func ("/nodes/copy/object", test_copy_object);