diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-05-07 00:24:03 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-05-07 00:24:03 +0300 |
commit | ed39daa568d162617a183497010d70a55a38ae73 (patch) | |
tree | 313c1caef8b42ab1800f5c1cef8dece9116fbd0d /src/tree.c | |
parent | 18d7db07b9f369901300bf664d07d4b39032ce64 (diff) | |
download | grecs-ed39daa568d162617a183497010d70a55a38ae73.tar.gz grecs-ed39daa568d162617a183497010d70a55a38ae73.tar.bz2 |
Redo memory management (2).
* src/grecs.h (grecs_free_fun): New extern.
(grecs_free): New proto.
* src/format.c: Use grecs_free where appropriate.
* src/grecs-lex.l: Likewise.
* src/preproc.c: Likewise.
* src/tree.c: Likewise.
* src/lookup.c (parse_label): Use grecs_value_list_create.
* src/mem.c: Initialize hooks with the default values.
(grecs_free_fun): New hook.
(grecs_free): New function.
* doc/grecs_malloc.3: Document grecs_free.
* doc/grecs_parse.3: Document the recent changes.
* doc/grecs_strdup.3: Update.
Diffstat (limited to 'src/tree.c')
-rw-r--r-- | src/tree.c | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -37,7 +37,7 @@ grecs_value_free(struct grecs_value *val) return; switch (val->type) { case GRECS_TYPE_STRING: - free(val->v.string); + grecs_free(val->v.string); break; case GRECS_TYPE_LIST: @@ -49,7 +49,7 @@ grecs_value_free(struct grecs_value *val) grecs_value_free(val->v.arg.v[i]); free(val->v.arg.v); } - free(val); + grecs_free(val); } struct grecs_node * @@ -111,7 +111,7 @@ grecs_node_unlink(struct grecs_node *node) static void listel_dispose(void *el) { - free(el); + grecs_free(el); } struct grecs_list * @@ -194,7 +194,7 @@ grecs_node_free(struct grecs_node *node) default: grecs_value_free(node->v.value); } - free(node); + grecs_free(node); } static enum grecs_tree_recurse_res @@ -350,10 +350,10 @@ string_to_sockaddr(struct grecs_sockaddr *sp, const char *string, grecs_error(locus, 0, _("%s: not a valid IP address or hostname"), host); - free(host); + grecs_free(host); return 1; } - free(host); + grecs_free(host); } if (p) { @@ -711,7 +711,7 @@ grecs_process_ident(struct grecs_keyword *kwp, grecs_value_t *value, locus) == 0) grecs_list_append(list, ptr); else - free(ptr); + grecs_free(ptr); } } *(struct grecs_list**)target = list; @@ -743,7 +743,7 @@ grecs_process_ident(struct grecs_keyword *kwp, grecs_value_t *value, ptr = grecs_malloc(size); if (grecs_string_convert(ptr, type, value->v.string, locus)) { - free(ptr); + grecs_free(ptr); grecs_list_free(list); return; } |