Use proper #define to see if need PLnumeric underlying_obj
authorKarl Williamson <khw@cpan.org>
Tue, 13 Feb 2018 23:34:27 +0000 (16:34 -0700)
committerKarl Williamson <khw@cpan.org>
Sun, 18 Feb 2018 17:55:13 +0000 (10:55 -0700)
perl.h has a single #define which is the combination of several that
determines if this object should be created or not.

intrpvar.h
locale.c
perl.c
sv.c

index 2bd43ab..51fb16b 100644 (file)
@@ -620,7 +620,7 @@ PERLVARI(I, numeric_underlying_is_standard, bool, TRUE)
 PERLVAR(I, numeric_name, char *)       /* Name of current numeric locale */
 PERLVAR(I, numeric_radix_sv, SV *)     /* The radix separator if not '.' */
 
-#  if defined(HAS_NEWLOCALE) && ! defined(NO_POSIX_2008_LOCALE)
+#  ifdef HAS_POSIX_2008_LOCALE
 
 PERLVARI(I, underlying_numeric_obj, locale_t, NULL)
 
index 428cd40..4430f53 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -502,7 +502,7 @@ Perl_new_numeric(pTHX_ const char *newnum)
 
     PL_numeric_underlying_is_standard = PL_numeric_standard;
 
-#  if defined(HAS_NEWLOCALE) && ! defined(NO_POSIX_2008_LOCALE)
+#  ifdef HAS_POSIX_2008_LOCALE
 
     PL_underlying_numeric_obj = newlocale(LC_NUMERIC_MASK,
                                           PL_numeric_name,
diff --git a/perl.c b/perl.c
index 96ad0f6..9817220 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -1152,26 +1152,22 @@ perl_destruct(pTHXx)
     PL_numeric_name = NULL;
     SvREFCNT_dec(PL_numeric_radix_sv);
     PL_numeric_radix_sv = NULL;
-#endif
-
-    if (PL_langinfo_buf) {
-        Safefree(PL_langinfo_buf);
-        PL_langinfo_buf = NULL;
-    }
-
-#ifdef USE_POSIX_2008_LOCALE
-#  ifdef USE_LOCALE_NUMERIC
 
+#  ifdef HAS_POSIX_2008_LOCALE
     if (PL_underlying_numeric_obj) {
         /* Make sure we aren't using the locale space we are about to free */
         uselocale(LC_GLOBAL_LOCALE);
         freelocale(PL_underlying_numeric_obj);
         PL_underlying_numeric_obj = (locale_t) NULL;
     }
-
 #  endif
 #endif
 
+    if (PL_langinfo_buf) {
+        Safefree(PL_langinfo_buf);
+        PL_langinfo_buf = NULL;
+    }
+
     /* clear character classes  */
     for (i = 0; i < POSIX_SWASH_COUNT; i++) {
         SvREFCNT_dec(PL_utf8_swash_ptrs[i]);
diff --git a/sv.c b/sv.c
index fa5295d..df98a95 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -15561,7 +15561,7 @@ perl_clone_using(PerlInterpreter *proto_perl, UV flags,
     PL_numeric_name    = SAVEPV(proto_perl->Inumeric_name);
     PL_numeric_radix_sv        = sv_dup_inc(proto_perl->Inumeric_radix_sv, param);
 
-#  if defined(HAS_NEWLOCALE) && ! defined(NO_POSIX_2008_LOCALE)
+#  if defined(HAS_POSIX_2008_LOCALE)
     PL_underlying_numeric_obj = NULL;
 #  endif
 #endif /* !USE_LOCALE_NUMERIC */