From: Heng Li Date: Sat, 29 Nov 2014 17:40:39 +0000 (-0500) Subject: added deallocator X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=b165c1c906fa791dde8b429ee6b9568356279df9;p=klib.git added deallocator --- 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);