This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
locale.c: toggling locales is a no-op if no locales
authorKarl Williamson <khw@cpan.org>
Wed, 27 Dec 2023 19:06:26 +0000 (12:06 -0700)
committerKarl Williamson <khw@cpan.org>
Wed, 3 Jan 2024 04:05:17 +0000 (21:05 -0700)
When the only legal locale is C, toggling to another locale doesn't make
sense.  By #defining the macro that implements toggling this to do
nothing in this case, we can avoid some #ifdefs

locale.c

index 9d0e87d..af58f7d 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -718,6 +718,19 @@ static const char C_thousands_sep[] = "";
 #define my_langinfo_c(item, category, locale, retbufp, retbuf_sizep, utf8ness) \
             my_langinfo_i(item, category##_INDEX_, locale, retbufp,            \
                                                       retbuf_sizep,  utf8ness)
+#ifndef USE_LOCALE  /* A no-op unless locales are enabled */
+#  define toggle_locale_i(index, locale)    NULL
+#  define restore_toggled_locale_i(index, locale)  PERL_UNUSED_VAR(locale)
+#else
+#  define toggle_locale_i(index, locale)                                    \
+                 S_toggle_locale_i(aTHX_ index, locale, __LINE__)
+#  define restore_toggled_locale_i(index, locale)                           \
+                 S_restore_toggled_locale_i(aTHX_ index, locale, __LINE__)
+#endif
+
+#  define toggle_locale_c(cat, locale)  toggle_locale_i(cat##_INDEX_, locale)
+#  define restore_toggled_locale_c(cat, locale)                             \
+                             restore_toggled_locale_i(cat##_INDEX_, locale)
 #ifdef USE_LOCALE
 #  ifdef DEBUGGING
 #    define setlocale_debug_string_i(index, locale, result)                 \
@@ -729,14 +742,6 @@ static const char C_thousands_sep[] = "";
                                       locale, result)
 #  endif
 
-#  define toggle_locale_i(index, locale)                                    \
-                 S_toggle_locale_i(aTHX_ index, locale, __LINE__)
-#  define toggle_locale_c(cat, locale)  toggle_locale_i(cat##_INDEX_, locale)
-#  define restore_toggled_locale_i(index, locale)                           \
-                 S_restore_toggled_locale_i(aTHX_ index, locale, __LINE__)
-#  define restore_toggled_locale_c(cat, locale)                             \
-                             restore_toggled_locale_i(cat##_INDEX_, locale)
-
 /* On systems without LC_ALL, pretending it exists anyway simplifies things.
  * Choose a value for it that is very unlikely to clash with any actual
  * category */