This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix [RT#66098] -- stricter checking on SvIVX exposed a lack of SvIOK check
authorAlex Vandiver <alexmv@mit.edu>
Thu, 28 May 2009 20:27:25 +0000 (16:27 -0400)
committerNicholas Clark <nick@ccl4.org>
Thu, 28 May 2009 20:33:16 +0000 (21:33 +0100)
op.c
t/op/split.t

diff --git a/op.c b/op.c
index 8851c06..7488887 100644 (file)
--- a/op.c
+++ b/op.c
@@ -4325,7 +4325,7 @@ Perl_newASSIGNOP(pTHX_ I32 flags, OP *left, I32 optype, OP *right)
                      ((LISTOP*)right)->op_last->op_type == OP_CONST)
                    {
                        SV *sv = ((SVOP*)((LISTOP*)right)->op_last)->op_sv;
-                       if (SvIVX(sv) == 0)
+                       if (SvIOK(sv) && SvIVX(sv) == 0)
                            sv_setiv(sv, PL_modcount+1);
                    }
                }
index 025327f..b3a9741 100755 (executable)
@@ -6,7 +6,7 @@ BEGIN {
     require './test.pl';
 }
 
-plan tests => 135;
+plan tests => 136;
 
 $FS = ':';
 
@@ -358,3 +358,9 @@ ok(@ary == 3 &&
     is($s[2]," XYZ");
     is(join(':',@s), join(':',@r));
 }
+
+{
+    use constant BANG => {};
+    () = split m/,/, "", BANG;
+    ok(1);
+}