locale.c: Refactor some #if clauses
authorKarl Williamson <khw@cpan.org>
Mon, 24 Jul 2017 18:34:29 +0000 (12:34 -0600)
committerKarl Williamson <khw@cpan.org>
Sun, 13 Aug 2017 04:53:11 +0000 (22:53 -0600)
This moves all the handling of the case where there are no locale
messages, instead of splitting it up across long stretches of
conditionally compiled code.  This code is essentially trivial, and seen
to be so when it isn't split up; this prepares for the next commit.

The final return of the function is still split off so that all branches
go through it, and the debugging code adjacent to it.

locale.c

index 58a0d58..14dcfe0 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -2715,13 +2715,18 @@ Perl_my_strerror(pTHX_ const int errnum)
      * to the C locale */
 
     char *errstr;
+    dVAR;
 
-#ifdef USE_LOCALE_MESSAGES  /* If platform doesn't have messages category, we
-                               don't do any switching to the C locale; we just
-                               use whatever strerror() returns */
-    const bool within_locale_scope = IN_LC(LC_MESSAGES);
+#ifndef USE_LOCALE_MESSAGES
 
-    dVAR;
+    /* If platform doesn't have messages category, we don't do any switching to
+     * the C locale; we just use whatever strerror() returns */
+
+    errstr = savepv(Strerror(errnum));
+
+#else   /* Has locale messages */
+
+    const bool within_locale_scope = IN_LC(LC_MESSAGES);
 
 #  ifdef USE_POSIX_2008_LOCALE
     locale_t save_locale = NULL;
@@ -2784,18 +2789,9 @@ Perl_my_strerror(pTHX_ const int errnum)
                                                __FILE__, __LINE__));
     }
 
-#endif
-
     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
              "Any locale change has been done; about to call Strerror\n"));
-    errstr = Strerror(errnum);
-    if (errstr) {
-
-        errstr = savepv(errstr);
-        SAVEFREEPV(errstr);
-    }
-
-#ifdef USE_LOCALE_MESSAGES
+    errstr = savepv(Strerror(errnum));
 
     if (! within_locale_scope) {
         errno = 0;
@@ -2825,6 +2821,7 @@ Perl_my_strerror(pTHX_ const int errnum)
     LOCALE_UNLOCK;
 
 #  endif
+#endif   /* End of does have locale messages */
 
 #ifdef DEBUGGING
 
@@ -2836,6 +2833,7 @@ Perl_my_strerror(pTHX_ const int errnum)
 
 #endif
 
+    SAVEFREEPV(errstr);
     return errstr;
 }