diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -471,10 +471,7 @@ main(int argc, char **argv) if (do_intl) exit(EXIT_SUCCESS); - if (current_namespace != awk_namespace) { - efree((char *) current_namespace); - current_namespace = awk_namespace; - } + set_current_namespace(awk_namespace); install_builtins(); @@ -520,7 +517,7 @@ main(int argc, char **argv) interpret(code_block); if (do_pretty_print) { - current_namespace = awk_namespace; + set_current_namespace(awk_namespace); dump_prog(code_block); dump_funcs(); } @@ -1173,7 +1170,7 @@ arg_assign(char *arg, bool initing) fatal(_("cannot use gawk builtin `%s' as variable name"), arg); if (! initing) { - var = lookup(arg, false); + var = lookup(arg); if (var != NULL && var->type == Node_func) fatal(_("cannot use function `%s' as variable name"), arg); } @@ -1798,3 +1795,14 @@ platform_name() return "posix"; #endif } + +/* set_current_namespace --- set current_namespace and handle memory management */ + +void +set_current_namespace(const char *new_namespace) +{ + if (current_namespace != awk_namespace) + efree((void *) current_namespace); + + current_namespace = new_namespace; +} |