From b165c1c906fa791dde8b429ee6b9568356279df9 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Sat, 29 Nov 2014 12:40:39 -0500 Subject: [PATCH] added deallocator --- kson.c | 9 +++++++++ kson.h | 8 +++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/kson.c b/kson.c index ddf9822..6596a18 100644 --- 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 737c354..8cdace0 100644 --- 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); -- 2.47.3