aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/main.c b/main.c
index 878e8086..d75e9871 100644
--- a/main.c
+++ b/main.c
@@ -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;
+}