summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--locale.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/locale.c b/locale.c
index f9b2c9350c..9acacb16f9 100644
--- a/locale.c
+++ b/locale.c
@@ -284,6 +284,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
}
if (!setlocale_failure) {
#ifdef USE_LOCALE_CTYPE
+ Safefree(curctype);
if (! (curctype =
setlocale(LC_CTYPE,
(!done && (lang || PerlEnv_getenv("LC_CTYPE")))
@@ -293,6 +294,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
curctype = savepv(curctype);
#endif /* USE_LOCALE_CTYPE */
#ifdef USE_LOCALE_COLLATE
+ Safefree(curcoll);
if (! (curcoll =
setlocale(LC_COLLATE,
(!done && (lang || PerlEnv_getenv("LC_COLLATE")))
@@ -302,6 +304,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
curcoll = savepv(curcoll);
#endif /* USE_LOCALE_COLLATE */
#ifdef USE_LOCALE_NUMERIC
+ Safefree(curnum);
if (! (curnum =
setlocale(LC_NUMERIC,
(!done && (lang || PerlEnv_getenv("LC_NUMERIC")))
@@ -458,12 +461,15 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
#endif /* ! LC_ALL */
#ifdef USE_LOCALE_CTYPE
+ Safefree(curctype);
curctype = savepv(setlocale(LC_CTYPE, NULL));
#endif /* USE_LOCALE_CTYPE */
#ifdef USE_LOCALE_COLLATE
+ Safefree(curcoll);
curcoll = savepv(setlocale(LC_COLLATE, NULL));
#endif /* USE_LOCALE_COLLATE */
#ifdef USE_LOCALE_NUMERIC
+ Safefree(curnum);
curnum = savepv(setlocale(LC_NUMERIC, NULL));
#endif /* USE_LOCALE_NUMERIC */
}