summaryrefslogtreecommitdiff
path: root/pp.c
diff options
context:
space:
mode:
authorJan Dubois <jand@activestate.com>2006-03-22 14:49:11 -0800
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2006-03-23 09:58:22 +0000
commitcab190d4d715e2c6ec26ee0ebfd0bc6fb0f03bd3 (patch)
treec3e965c0a96cfea8739dcaafefe2f784201da4ea /pp.c
parent0905937dfb35f5c5812cb6d7a8ed9334fb7fa7d9 (diff)
downloadperl-cab190d4d715e2c6ec26ee0ebfd0bc6fb0f03bd3.tar.gz
RE: [PATCH, no, really!] Re: [perl #38779] NAN's on Win32
From: "Jan Dubois" <jand@ActiveState.com> Message-ID: <060201c64e45$e4ca7020$2217a8c0@candy> Also, back out change #27567. p4raw-link: @27567 on //depot/perl: 9bf76a6a2fc16ab628a46452e34352d3e3d71674 p4raw-id: //depot/perl@27576
Diffstat (limited to 'pp.c')
-rw-r--r--pp.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/pp.c b/pp.c
index 6b3ead8ec0..99f0b06feb 100644
--- a/pp.c
+++ b/pp.c
@@ -1714,8 +1714,15 @@ PP(pp_lt)
}
#endif
{
+#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
+ dPOPTOPnnrl;
+ if (Perl_isnan(left) || Perl_isnan(right))
+ RETSETNO;
+ SETs(boolSV(left < right));
+#else
dPOPnv;
SETs(boolSV(TOPn < value));
+#endif
RETURN;
}
}
@@ -1790,8 +1797,15 @@ PP(pp_gt)
}
#endif
{
+#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
+ dPOPTOPnnrl;
+ if (Perl_isnan(left) || Perl_isnan(right))
+ RETSETNO;
+ SETs(boolSV(left > right));
+#else
dPOPnv;
SETs(boolSV(TOPn > value));
+#endif
RETURN;
}
}
@@ -1866,8 +1880,15 @@ PP(pp_le)
}
#endif
{
+#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
+ dPOPTOPnnrl;
+ if (Perl_isnan(left) || Perl_isnan(right))
+ RETSETNO;
+ SETs(boolSV(left <= right));
+#else
dPOPnv;
SETs(boolSV(TOPn <= value));
+#endif
RETURN;
}
}
@@ -1942,8 +1963,15 @@ PP(pp_ge)
}
#endif
{
+#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
+ dPOPTOPnnrl;
+ if (Perl_isnan(left) || Perl_isnan(right))
+ RETSETNO;
+ SETs(boolSV(left >= right));
+#else
dPOPnv;
SETs(boolSV(TOPn >= value));
+#endif
RETURN;
}
}
@@ -2011,8 +2039,15 @@ PP(pp_ne)
}
#endif
{
+#if defined(NAN_COMPARE_BROKEN) && defined(Perl_isnan)
+ dPOPTOPnnrl;
+ if (Perl_isnan(left) || Perl_isnan(right))
+ RETSETYES;
+ SETs(boolSV(left != right));
+#else
dPOPnv;
SETs(boolSV(TOPn != value));
+#endif
RETURN;
}
}