aboutsummaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2011-05-07 00:24:03 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2011-05-07 00:24:03 +0300
commited39daa568d162617a183497010d70a55a38ae73 (patch)
tree313c1caef8b42ab1800f5c1cef8dece9116fbd0d /src/tree.c
parent18d7db07b9f369901300bf664d07d4b39032ce64 (diff)
downloadgrecs-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.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/tree.c b/src/tree.c
index 7d2eca8..22a169a 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -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;
}

Return to:

Send suggestions and report system problems to the System administrator.