summaryrefslogtreecommitdiff
path: root/miniperlmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'miniperlmain.c')
-rw-r--r--miniperlmain.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/miniperlmain.c b/miniperlmain.c
index a1ef2f1574..f22dcbba8d 100644
--- a/miniperlmain.c
+++ b/miniperlmain.c
@@ -70,6 +70,8 @@ main(int argc, char **argv, char **env)
#ifdef PERL_GLOBAL_STRUCT
struct perl_vars *my_vars = init_global_struct();
# ifdef PERL_GLOBAL_STRUCT_PRIVATE
+ int veto;
+
my_plvarsp = my_vars;
# endif
#endif /* PERL_GLOBAL_STRUCT */
@@ -146,9 +148,13 @@ main(int argc, char **argv, char **env)
PERL_SYS_TERM();
#ifdef PERL_GLOBAL_STRUCT
+# ifdef PERL_GLOBAL_STRUCT_PRIVATE
+ veto = my_plvarsp->Gveto_cleanup;
+# endif
free_global_struct(my_vars);
# ifdef PERL_GLOBAL_STRUCT_PRIVATE
- my_plvarsp = NULL;
+ if (!veto)
+ my_plvarsp = NULL;
/* Remember, functions registered with atexit() can run after this point,
and may access "global" variables, and hence end up calling
Perl_GetVarsPrivate() */