summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>1999-10-17 20:33:42 +0000
committerGurusamy Sarathy <gsar@cpan.org>1999-10-17 20:33:42 +0000
commita7ec2b44b6a6713a67d2b7d1975eb72a28c1caf5 (patch)
tree3157dd5947c6803d2e8047aa7eee5b1305c422cf
parent475d79b5e99617ecaabd8d9765f5247b6d49652c (diff)
downloadperl-a7ec2b44b6a6713a67d2b7d1975eb72a28c1caf5.tar.gz
serious bug introduced by G_VOID changes in 5.003_96: scalar
eval"" did not pop stack correctly; C<$a = eval "(1,2)x1"> is one symptom of the problem p4raw-id: //depot/perl@4401
-rw-r--r--pp_ctl.c1
-rwxr-xr-xt/op/eval.t8
2 files changed, 8 insertions, 1 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index 5e45a9c48f..5f937ba9df 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -3124,6 +3124,7 @@ PP(pp_leaveeval)
MEXTEND(mark,0);
*MARK = &PL_sv_undef;
}
+ SP = MARK;
}
else {
/* in case LEAVE wipes old return values */
diff --git a/t/op/eval.t b/t/op/eval.t
index abcb3794b7..ea6caf43bd 100755
--- a/t/op/eval.t
+++ b/t/op/eval.t
@@ -1,6 +1,6 @@
#!./perl
-print "1..37\n";
+print "1..38\n";
eval 'print "ok 1\n";';
@@ -176,3 +176,9 @@ $SIG{__DIE__} = sub { eval {1}; die shift };
eval { die "ok ".$x++,"\n" };
print $@;
+# does scalar eval"" pop stack correctly?
+{
+ my $c = eval "(1,2)x10";
+ print $c eq '2222222222' ? "ok $x\n" : "# $c\nnot ok $x\n";
+ $x++;
+}