This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #87708] use integer; $tied != $tied
authorFather Chrysostomos <sprout@cpan.org>
Wed, 6 Apr 2011 13:17:23 +0000 (06:17 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 6 Apr 2011 15:40:07 +0000 (08:40 -0700)
This is just part of #87708.

This fixes != under â€˜use integer’ when the same tied scalar is used
for both operands and returns two different values. Before this com-
mit, get-magic would be called only once and the same value used. In
5.12.x it just worked.

pp.c
t/lib/warnings/9uninit
t/op/tie_fetch_count.t

diff --git a/pp.c b/pp.c
index a1bc15b..899f2b8 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -3038,7 +3038,7 @@ PP(pp_i_ne)
     dVAR; dSP;
     tryAMAGICbin_MG(ne_amg, AMGf_set);
     {
-      dPOPTOPiirl_nomg;
+      dPOPTOPiirl_halfmg;
       SETs(boolSV(left != right));
       RETURN;
     }
index d42ec36..415eb26 100644 (file)
@@ -577,8 +577,8 @@ Use of uninitialized value $g1 in integer ge (>=) at - line 16.
 Use of uninitialized value $m1 in integer ge (>=) at - line 16.
 Use of uninitialized value $g1 in integer eq (==) at - line 17.
 Use of uninitialized value $m1 in integer eq (==) at - line 17.
-Use of uninitialized value $g1 in integer ne (!=) at - line 18.
 Use of uninitialized value $m1 in integer ne (!=) at - line 18.
+Use of uninitialized value $g1 in integer ne (!=) at - line 18.
 Use of uninitialized value $m1 in integer comparison (<=>) at - line 19.
 Use of uninitialized value $g1 in integer comparison (<=>) at - line 19.
 Use of uninitialized value $m1 in integer negation (-) at - line 20.
index 7cbb8fd..1188cf7 100644 (file)
@@ -250,8 +250,8 @@ bin_test '.' ,  1, 2, 12;
     bin_int_test '<=', 44, 2, "";
     bin_int_test '>=',  1, 2, "";
     bin_int_test '==',  1, 2, "";
-    bin_int_test '!=',  1, 2, 1;
 }
+bin_int_test '!=',  1, 2, 1;
 bin_int_test '<=>', 1, 2, -1;
 tie $var, "main", 1, 4;
 cmp_ok(atan2($var, $var), '<', .3, 'retval of atan2 $var, $var');