From f38a8f801496ea91cef7a8507e2919f6586d0694 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Tue, 6 Jan 2015 20:17:35 -0500 Subject: Fix bug in API deferred variable creation and add a test case. --- awkgram.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'awkgram.c') diff --git a/awkgram.c b/awkgram.c index 2257ee35..249fdcdf 100644 --- a/awkgram.c +++ b/awkgram.c @@ -7054,16 +7054,18 @@ is_deferred_variable(const char *name) /* variable_create --- create a new variable */ NODE * -variable_create(char *name, NODETYPE type) +variable_create(char *name, NODETYPE type, bool *is_deferred) { struct deferred_variable *dv; for (dv = deferred_variables; dv != NULL; dv = dv->next) { if (strcmp(name, dv->name) == 0) { efree(name); + *is_deferred = true; return (*dv->load_func)(); } } + *is_deferred = false; return install_symbol(name, type); } @@ -7073,6 +7075,7 @@ NODE * variable(int location, char *name, NODETYPE type) { NODE *r; + bool is_deferred; if ((r = lookup(name)) != NULL) { if (r->type == Node_func || r->type == Node_ext_func ) @@ -7084,7 +7087,7 @@ variable(int location, char *name, NODETYPE type) return r; } /* not found */ - return variable_create(name, type); + return variable_create(name, type, & is_deferred); } /* process_deferred --- if the program uses SYMTAB, load deferred variables */ -- cgit v1.2.3