summaryrefslogtreecommitdiff
path: root/pp.h
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-04-05 21:39:01 -0700
committerFather Chrysostomos <sprout@cpan.org>2011-04-05 22:21:01 -0700
commitc31c2913381bad74c5f1f5c67c4d9c6e037550ad (patch)
tree37b444f97af6a3be1c7a487e627cd7541a85aa25 /pp.h
parent801eb0831ada14406f0f0900110602ffb6aa5476 (diff)
downloadperl-c31c2913381bad74c5f1f5c67c4d9c6e037550ad.tar.gz
[perl #87708] atan2 $tied, $tied
This fixes atan2 when the same tied scalar is used for both operands and returns two different values. Before this commit, get-magic would be called only once and the same value used. In 5.12.x, the operands would be reversed.
Diffstat (limited to 'pp.h')
-rw-r--r--pp.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/pp.h b/pp.h
index 690306944e..eef6a0b806 100644
--- a/pp.h
+++ b/pp.h
@@ -370,6 +370,11 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
#define dPOPTOPnnrl_ul dPOPXnnrl_ul(TOP)
#define dPOPTOPnnrl_nomg \
NV right = SvNV_nomg(TOPs); NV left = (sp--, SvNV_nomg(TOPs))
+#ifdef PERL_CORE
+# define dPOPTOPnnrl_halfmg \
+ NV left = SvNV_nomg(TOPm1s); \
+ NV right = TOPs == TOPm1s ? SvNV(TOPs) : SvNV_nomg(TOPs); sp--
+#endif
#define dPOPTOPiirl dPOPXiirl(TOP)
#define dPOPTOPiirl_ul dPOPXiirl_ul(TOP)
#define dPOPTOPiirl_ul_nomg dPOPXiirl_ul_nomg(TOP)