summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/POSIX/POSIX.xs9
-rw-r--r--util.c7
2 files changed, 14 insertions, 2 deletions
diff --git a/ext/POSIX/POSIX.xs b/ext/POSIX/POSIX.xs
index 3a523d1d07..9f1e8555fa 100644
--- a/ext/POSIX/POSIX.xs
+++ b/ext/POSIX/POSIX.xs
@@ -1517,6 +1517,15 @@ constant(char *name, int arg)
break;
case 'H':
if (strEQ(name, "HUGE_VAL"))
+#ifdef USE_LONG_DOUBLE
+ /* HUGE_VALL is admittedly non-POSIX but if are using long doubles
+ * we might as well use long doubles. --jhi */
+# ifdef HUGE_VALL
+ return HUGE_VALL;
+# else
+ goto not_there;
+# endif
+#endif
#ifdef HUGE_VAL
return HUGE_VAL;
#else
diff --git a/util.c b/util.c
index 059d9a45fc..41ded136ff 100644
--- a/util.c
+++ b/util.c
@@ -3577,7 +3577,7 @@ Perl_new_struct_thread(pTHX_ struct perl_thread *t)
}
#endif /* USE_THREADS */
-#ifdef HUGE_VAL
+#if defined(HUGE_VAL) || (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL))
/*
* This hack is to force load of "huge" support from libm.a
* So it is in perl for (say) POSIX to use.
@@ -3586,7 +3586,10 @@ Perl_new_struct_thread(pTHX_ struct perl_thread *t)
NV
Perl_huge(void)
{
- return HUGE_VAL;
+# if defined(USE_LONG_DOUBLE) && defined(HUGE_VALL)
+ return HUGE_VALL;
+# endif
+ return HUGE_VAL;
}
#endif