summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--op.c1
-rwxr-xr-xt/comp/package.t16
-rwxr-xr-xt/lib/dumper.t2
3 files changed, 17 insertions, 2 deletions
diff --git a/op.c b/op.c
index a64b435761..cdc93325d6 100644
--- a/op.c
+++ b/op.c
@@ -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";