diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2019-01-25 11:55:54 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2019-01-25 11:55:54 +0200 |
commit | eea77e4b393b7c1841da887f590b5f5eab964ad4 (patch) | |
tree | eb0e955851fbdd85250e12fbfaa5ec390d1088f9 /main.c | |
parent | 48f4822b0602c44aacd418f36ff35645e8379b8e (diff) | |
parent | fda51ca6fd0d9ad93bead9887ded0b07c90680fb (diff) | |
download | egawk-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.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; +} |