aboutsummaryrefslogtreecommitdiff
path: root/src/preproc.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/preproc.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/preproc.c')
-rw-r--r--src/preproc.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/preproc.c b/src/preproc.c
index 06924c1..28f473f 100644
--- a/src/preproc.c
+++ b/src/preproc.c
@@ -266,13 +266,13 @@ pp_list_find(struct grecs_list *list, struct file_data *dptr)
return dptr->found;
}
static void
incl_free(void *data)
{
- free(data);
+ grecs_free(data);
}
void
grecs_include_path_setup_v(char **dirs)
{
if (!include_path) {
@@ -312,13 +312,13 @@ grecs_include_path_setup(const char *dir, ...)
argv[argi++] = (char*) p;
if (!p)
break;
p = va_arg(ap, const char*);
}
grecs_include_path_setup_v(argv);
- free(argv);
+ grecs_free(argv);
va_end(ap);
}
void
grecs_preproc_add_include_dir(char *dir)
{
@@ -449,13 +449,13 @@ pop_source()
return 1;
fclose(INFILE);
/* Restore previous context */
ctx = context_stack->prev;
- free(context_stack);
+ grecs_free(context_stack);
context_stack = ctx;
if (!context_stack) {
if (yy_grecs_flex_debug)
fprintf (stderr, "End of input\n");
return 1;
@@ -538,13 +538,13 @@ parse_include(const char *text, int once)
if (p[0] != '/' && try_file(p, allow_cwd, 1, &tmp))
p = tmp;
}
if (p)
rc = push_source(p, once);
- free(tmp);
+ grecs_free(tmp);
wordsplit_free(&ws);
return rc;
}
int
grecs_preproc_init(const char *name)
@@ -553,15 +553,15 @@ grecs_preproc_init(const char *name)
}
void
grecs_preproc_done()
{
grecs_symtab_free(incl_sources);
- free(linebuf);
- free(putback_buffer);
- free(linebufbase);
+ grecs_free(linebuf);
+ grecs_free(putback_buffer);
+ free(linebufbase); /* Allocated via standard malloc/realloc */
}
int
grecs_preproc_run(const char *config_file, const char *extpp)
{
size_t i;
@@ -576,29 +576,29 @@ grecs_preproc_run(const char *config_file, const char *extpp)
if (try_file("pp-setup", 1, 0, &setup_file)) {
size_t size = 0;
if (grecs_asprintf(&cmd, &size,
"%s %s -", extpp, setup_file))
grecs_alloc_die();
- free(setup_file);
+ grecs_free(setup_file);
} else
cmd = grecs_strdup (extpp);
/*FIXME_DEBUG_F1 (2, "Running preprocessor: `%s'", cmd);*/
outfile = popen(cmd, "w");
if (!outfile){
grecs_error(NULL, errno,
_("Unable to start external preprocessor `%s'"),
cmd);
- free(cmd);
+ grecs_free(cmd);
return 1;
}
while ((i = grecs_preproc_fill_buffer(buffer, sizeof buffer)))
fwrite(buffer, 1, i, outfile);
pclose(outfile);
- free(cmd);
+ grecs_free(cmd);
} else {
while ((i = grecs_preproc_fill_buffer(buffer, sizeof buffer)))
fwrite(buffer, 1, i, stdout);
}
grecs_preproc_done();
return 0;

Return to:

Send suggestions and report system problems to the System administrator.