diff options
author | Gurusamy Sarathy <gsar@cpan.org> | 1998-11-26 06:51:16 +0000 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1998-11-26 06:51:16 +0000 |
commit | 7ad382f40c272949663b62a641674bd9771ee3b8 (patch) | |
tree | a3e68bac2583aee0cf9d8a2fcc30bec894332032 | |
parent | 73a462964be81fd1ed02a757d25ecbbf6c0e2686 (diff) | |
download | perl-7ad382f40c272949663b62a641674bd9771ee3b8.tar.gz |
fix C<if (...) { package Foo; ... }> misoptimization that fails
to set the package for the block properly
p4raw-id: //depot/perl@2299
-rw-r--r-- | op.c | 1 | ||||
-rwxr-xr-x | t/comp/package.t | 16 | ||||
-rwxr-xr-x | t/lib/dumper.t | 2 |
3 files changed, 17 insertions, 2 deletions
@@ -2597,6 +2597,7 @@ package(OP *o) sv_setpv(PL_curstname,"<none>"); PL_curstash = Nullhv; } + PL_hints |= HINT_BLOCK_SCOPE; PL_copline = NOLINE; PL_expect = XSTATE; } diff --git a/t/comp/package.t b/t/comp/package.t index d7d19ae882..4982256db7 100755 --- a/t/comp/package.t +++ b/t/comp/package.t @@ -1,6 +1,6 @@ #!./perl -print "1..7\n"; +print "1..8\n"; $blurfl = 123; $foo = 3; @@ -37,3 +37,17 @@ print $blurfl == 5 ? "ok 4\n" : "not ok 4\n"; eval 'print $blurfl == 5 ? "ok 5\n" : "not ok 5\n";'; eval 'package main; print $blurfl == 123 ? "ok 6\n" : "not ok 6\n";'; print $blurfl == 5 ? "ok 7\n" : "not ok 7\n"; + +package main; + +sub c { caller(0) } + +sub foo { + my $s = shift; + if ($s) { + package PQR; + main::c(); + } +} + +print((foo(1))[0] eq 'PQR' ? "ok 8\n" : "not ok 8\n"); diff --git a/t/lib/dumper.t b/t/lib/dumper.t index e3d339afd4..063df83457 100755 --- a/t/lib/dumper.t +++ b/t/lib/dumper.t @@ -39,7 +39,7 @@ if (defined &Data::Dumper::Dumpxs) { } else { print "### XS extensions not loaded, will NOT run XS tests\n"; - $TMAX = 86; $XS = 0; + $TMAX = 81; $XS = 0; } print "1..$TMAX\n"; |