* when we already had a match because __PACKAGE__ can only appear in
* direct method calls ("new __PACKAGE__" is a syntax error). */
len = SvCUR(sv);
- if (len == (STRLEN) HvNAMELEN_get(PL_curstash)
+ if (PL_curstash
+ && len == (STRLEN) HvNAMELEN_get(PL_curstash)
&& memcmp(SvPVX(sv), HvNAME_get(PL_curstash), len) == 0) {
STRLEN pos_pkg;
SV *pkg = sv_newmortal();
use strict;
use warnings;
-use Test::More tests => 3;
+use Test::More tests => 4;
use lib 't/lib';
use VPIT::TestHelpers;
my $status = run_perl "use Devel::CallParser (); no indirect; sub ok { } ok 1";
is $status, 0, 'indirect is not getting upset by Devel::CallParser';
}
+
+SKIP:
+{
+ my $has_package_empty = do {
+ local $@;
+ eval 'no warnings "deprecated"; package; 1'
+ };
+ skip 'Empty package only available on perl 5.8.x and below' => 1
+ unless $has_package_empty;
+ my $status = run_perl 'no indirect hook => sub { }; exit 0; package; new X;';
+ is $status, 0, 'indirect does not croak while package empty is in use';
+}