X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/f955cd4a58de7ef332ccbaca58561be68bee4f6a..ee27170c5cfbe03f03b6c6c5e8e66c716119f3bc:/perl.c diff --git a/perl.c b/perl.c index 6d1fff3..2013a76 100644 --- a/perl.c +++ b/perl.c @@ -96,6 +96,7 @@ S_init_tls_and_interp(PerlInterpreter *my_perl) HINTS_REFCNT_INIT; LOCALE_INIT; USER_PROP_MUTEX_INIT; + ENV_INIT; MUTEX_INIT(&PL_dollarzero_mutex); MUTEX_INIT(&PL_my_ctx_mutex); # endif @@ -1197,6 +1198,8 @@ perl_destruct(pTHXx) PL_UpperLatin1 = NULL; SvREFCNT_dec(PL_in_some_fold); PL_in_some_fold = NULL; + SvREFCNT_dec(PL_utf8_foldclosures); + PL_utf8_foldclosures = NULL; SvREFCNT_dec(PL_utf8_idcont); PL_utf8_idcont = NULL; SvREFCNT_dec(PL_utf8_idstart); @@ -1244,9 +1247,7 @@ perl_destruct(pTHXx) } } - if (!specialWARN(PL_compiling.cop_warnings)) - PerlMemShared_free(PL_compiling.cop_warnings); - PL_compiling.cop_warnings = NULL; + free_and_set_cop_warnings(&PL_compiling, NULL); cophh_free(CopHINTHASH_get(&PL_compiling)); CopHINTHASH_set(&PL_compiling, cophh_new_empty()); CopFILE_free(&PL_compiling); @@ -2282,10 +2283,6 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit) #endif (s = PerlEnv_getenv("PERL5OPT"))) { - /* s points to static memory in getenv(), which may be overwritten at - * any time; use a mortal copy instead */ - s = SvPVX(sv_2mortal(newSVpv(s, 0))); - while (isSPACE(*s)) s++; if (*s == '-' && *(s+1) == 'T') { @@ -3743,16 +3740,12 @@ Perl_moreswitches(pTHX_ const char *s) return s; case 'W': PL_dowarn = G_WARN_ALL_ON|G_WARN_ON; - if (!specialWARN(PL_compiling.cop_warnings)) - PerlMemShared_free(PL_compiling.cop_warnings); - PL_compiling.cop_warnings = pWARN_ALL ; + free_and_set_cop_warnings(&PL_compiling, pWARN_ALL); s++; return s; case 'X': PL_dowarn = G_WARN_ALL_OFF; - if (!specialWARN(PL_compiling.cop_warnings)) - PerlMemShared_free(PL_compiling.cop_warnings); - PL_compiling.cop_warnings = pWARN_NONE ; + free_and_set_cop_warnings(&PL_compiling, pWARN_NONE); s++; return s; case '*': @@ -5252,7 +5245,7 @@ Perl_my_failure_exit(pTHX) * success/warning codes to fatal with out changing * the POSIX status code. The severity makes VMS native * status handling work, while UNIX mode programs use the - * the POSIX exit codes. + * POSIX exit codes. */ if ((STATUS_NATIVE & (STS$K_SEVERE|STS$K_ERROR)) == 0) { STATUS_NATIVE &= STS$M_COND_ID;