summaryrefslogtreecommitdiff
path: root/sv.h
diff options
context:
space:
mode:
authorDominic Dunlop <domo@computer.org>2005-07-29 19:41:59 +0200
committerH.Merijn Brand <h.m.brand@xs4all.nl>2005-07-31 15:47:51 +0000
commiteadb06ac19e8254784f422ffad185fcaeb39a697 (patch)
tree1f4701f4d4a5182b6b89daef4e52cf76d02e375a /sv.h
parent353d4d657fc1ddb72fa0dc8000e84d109a3813d2 (diff)
downloadperl-eadb06ac19e8254784f422ffad185fcaeb39a697.tar.gz
Re: Smoke [5.9.3] 25237 FAIL(F) linux 2.6.12-4-686 [debian] (i686/1 cpu)
Message-Id: <33378322-189C-4D70-AC0B-1AF589DD56E7@mac.com> p4raw-id: //depot/perl@25247
Diffstat (limited to 'sv.h')
-rw-r--r--sv.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/sv.h b/sv.h
index 44e9cf2e04..6983f45f27 100644
--- a/sv.h
+++ b/sv.h
@@ -870,9 +870,11 @@ in gv.h: */
#define SvRVx(sv) SvRV(sv)
#ifdef PERL_DEBUG_COW
+/* Need -0.0 for SvNVX to preserve IEEE FP "negative zero" because
+ +0.0 + -0.0 => +0.0 but -0.0 + -0.0 => -0.0 */
# define SvIVX(sv) (0 + ((XPVIV*) SvANY(sv))->xiv_iv)
# define SvUVX(sv) (0 + ((XPVUV*) SvANY(sv))->xuv_uv)
-# define SvNVX(sv) (0 + ((XPVNV*) SvANY(sv))->xnv_nv)
+# define SvNVX(sv) (-0.0 + ((XPVNV*) SvANY(sv))->xnv_nv)
/* Don't test the core XS code yet. */
# if defined (PERL_CORE) && PERL_DEBUG_COW > 1
# define SvPVX(sv) (0 + (assert(!SvREADONLY(sv)), (sv)->sv_u.svu_pv))