aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2019-01-25 11:55:54 +0200
committerArnold D. Robbins <arnold@skeeve.com>2019-01-25 11:55:54 +0200
commiteea77e4b393b7c1841da887f590b5f5eab964ad4 (patch)
treeeb0e955851fbdd85250e12fbfaa5ec390d1088f9 /main.c
parent48f4822b0602c44aacd418f36ff35645e8379b8e (diff)
parentfda51ca6fd0d9ad93bead9887ded0b07c90680fb (diff)
downloadegawk-eea77e4b393b7c1841da887f590b5f5eab964ad4.tar.gz
egawk-eea77e4b393b7c1841da887f590b5f5eab964ad4.tar.bz2
egawk-eea77e4b393b7c1841da887f590b5f5eab964ad4.zip
Merge branch 'feature/fix-ns-memleak'
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;
+}