]> git.kaiwu.me - klib.git/commitdiff
added deallocator
authorHeng Li <lh3@me.com>
Sat, 29 Nov 2014 17:40:39 +0000 (12:40 -0500)
committerHeng Li <lh3@me.com>
Sat, 29 Nov 2014 17:40:39 +0000 (12:40 -0500)
kson.c
kson.h

diff --git a/kson.c b/kson.c
index ddf98227ab27825d2f408218469bdabb172ee0d2..6596a188ffc558d99608ae96d581091a7ef550e0 100644 (file)
--- a/kson.c
+++ b/kson.c
@@ -94,6 +94,15 @@ kson_node_t *kson_parse(const char *json, int *_n, int *error, int *parsed_len)
        return a;
 }
 
+void kson_destroy(int n_nodes, kson_node_t *nodes)
+{
+       int i;
+       for (i = 0; i < n_nodes; ++i) {
+               free(nodes[i].key); free(nodes[i].str);
+       }
+       free(nodes);
+}
+
 void kson_print_recur(kson_node_t *nodes, kson_node_t *p)
 {
        if (p->key) {
diff --git a/kson.h b/kson.h
index 737c354bff9fc6f53b9cd9fdd0ce4094f40a1d5a..8cdace0ff9af7808b9e967fe2555f9a408a74a29 100644 (file)
--- a/kson.h
+++ b/kson.h
@@ -31,13 +31,15 @@ extern "C" {
         * Parse a JSON string
         *
         * @param json        JSON string
-        * @param n           number of nodes
+        * @param n_nodes     number of nodes
         * @param error       0 if no error; or set to one of KSON_ERR_* values
         * @param parsed_len  if not NULL, equal to the parsed length
         *
-        * @return An array of size $n keeping parsed nodes
+        * @return An array of size $n_nodes keeping parsed nodes
         */
-       kson_node_t *kson_parse(const char *json, int *n, int *error, int *parsed_len);
+       kson_node_t *kson_parse(const char *json, int *n_nodes, int *error, int *parsed_len);
+
+       void kson_destroy(int n_nodes, kson_node_t *nodes);
 
        void kson_print_recur(kson_node_t *nodes, kson_node_t *root);