This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
bump Typemap.pm version
[perl5.git] / perl.h
diff --git a/perl.h b/perl.h
index 9c5e9a3..e5a5585 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -6420,8 +6420,8 @@ expression, but with an empty argument list, like this:
 #  define STORE_LC_NUMERIC_SET_TO_NEEDED()                                  \
         STMT_START {                                                        \
             LC_NUMERIC_LOCK(                                                \
-                          (IN_LC(LC_NUMERIC) && _NOT_IN_NUMERIC_UNDERLYING) \
-                      || _NOT_IN_NUMERIC_STANDARD);                         \
+                    (   (  IN_LC(LC_NUMERIC) && _NOT_IN_NUMERIC_UNDERLYING) \
+                     || (! IN_LC(LC_NUMERIC) && _NOT_IN_NUMERIC_STANDARD)));\
             if (IN_LC(LC_NUMERIC)) {                                        \
                 if (_NOT_IN_NUMERIC_UNDERLYING) {                           \
                     Perl_set_numeric_underlying(aTHX);                      \
@@ -6528,37 +6528,14 @@ expression, but with an empty argument list, like this:
 #endif /* !USE_LOCALE_NUMERIC */
 
 #define Atof                           my_atof
+#define Strtod                          my_strtod
 
-/* These are wrapped just below to handle locale */
-#ifdef USE_QUADMATH
-#  define _Perl_strtod(s, e) strtoflt128(s, e)
-#elif defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE)
-#  if defined(__MINGW64_VERSION_MAJOR) && defined(HAS_STRTOLD)
-      /***********************************************
-       We are unable to use strtold because of
-        https://sourceforge.net/p/mingw-w64/bugs/711/
-        &
-        https://sourceforge.net/p/mingw-w64/bugs/725/
-
-       but __mingw_strtold is fine.
-      ***********************************************/
-#    define _Perl_strtod(s, e) __mingw_strtold(s, e)
-#  elif defined(HAS_STRTOLD)
-#    define _Perl_strtod(s, e) strtold(s, e)
-#  elif defined(HAS_STRTOD)
-#    define _Perl_strtod(s, e) (NV)strtod(s, e) /* Unavoidable loss. */
-#  endif
-#elif defined(HAS_STRTOD)
-#  define _Perl_strtod(s, e) strtod(s, e)
-#endif
-
-#define Perl_strotod(s, e)                                              \
-    STMT_START {                                                        \
-        DECLARATION_FOR_LC_NUMERIC_MANIPULATION;                        \
-        STORE_LC_NUMERIC_SET_TO_NEEDED();                               \
-        _Perl_strtod(s,e)                                               \
-        RESTORE_LC_NUMERIC();                                           \
-    } STMT_END
+#if    defined(HAS_STRTOD)                                          \
+   ||  defined(USE_QUADMATH)                                        \
+   || (defined(HAS_STRTOLD) && defined(HAS_LONG_DOUBLE)             \
+                            && defined(USE_LONG_DOUBLE))
+#  define Perl_strtod   Strtod
+#endif
 
 #if !defined(Strtol) && defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && \
        (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)