X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/d573a731832b47514921a72ae88e60b18be87e33..fe13cdfc4deea4dd1e7efe56ec325c7d185052b4:/miniperlmain.c diff --git a/miniperlmain.c b/miniperlmain.c index 71b9424..fa7951f 100644 --- a/miniperlmain.c +++ b/miniperlmain.c @@ -66,12 +66,13 @@ int main(int argc, char **argv, char **env) #endif { - dVAR; int exitstatus, i; #ifdef PERL_GLOBAL_STRUCT - struct perl_vars *plvarsp = init_global_struct(); + struct perl_vars *my_vars = init_global_struct(); # ifdef PERL_GLOBAL_STRUCT_PRIVATE - my_vars = my_plvarsp = plvarsp; + int veto; + + my_plvarsp = my_vars; # endif #endif /* PERL_GLOBAL_STRUCT */ #ifndef NO_ENV_ARRAY_IN_MAIN @@ -106,6 +107,8 @@ main(int argc, char **argv, char **env) Perl_atfork_unlock); #endif + PERL_SYS_FPU_INIT; + if (!PL_do_undump) { my_perl = perl_alloc(); if (!my_perl) @@ -147,11 +150,20 @@ main(int argc, char **argv, char **env) PERL_SYS_TERM(); #ifdef PERL_GLOBAL_STRUCT - free_global_struct(plvarsp); +# ifdef PERL_GLOBAL_STRUCT_PRIVATE + veto = my_plvarsp->Gveto_cleanup; +# endif + free_global_struct(my_vars); +# ifdef PERL_GLOBAL_STRUCT_PRIVATE + 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() */ +#endif #endif /* PERL_GLOBAL_STRUCT */ exit(exitstatus); - return exitstatus; } /* Register any extra external extensions */