diff options
author | Nicholas Clark <nick@ccl4.org> | 2007-03-02 13:23:22 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2007-03-02 13:23:22 +0000 |
commit | 06be3b4087230d77129ccda5ba56e0397c241c48 (patch) | |
tree | e4438740be1387d81019216101a5fb6aca5e60d1 | |
parent | 97f820fb1a463793ff94e5a914471dd9b45ed010 (diff) | |
download | perl-06be3b4087230d77129ccda5ba56e0397c241c48.tar.gz |
Don't crash if the symbol table entry for ISA isn't a typeglob.
p4raw-id: //depot/perl@30442
-rw-r--r-- | gv.c | 2 | ||||
-rwxr-xr-x | t/op/gv.t | 8 |
2 files changed, 8 insertions, 2 deletions
@@ -368,7 +368,7 @@ Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level) } gvp = (GV**)hv_fetchs(stash, "ISA", FALSE); - av = (gvp && (gv = *gvp) && gv != (GV*)&PL_sv_undef) ? GvAV(gv) : NULL; + av = (gvp && (gv = *gvp) && isGV_with_GP(gv)) ? GvAV(gv) : NULL; /* create and re-create @.*::SUPER::ISA on demand */ if (!av || !SvMAGIC(av)) { @@ -12,7 +12,7 @@ BEGIN { use warnings; require './test.pl'; -plan( tests => 154 ); +plan( tests => 155 ); # type coersion on assignment $foo = 'foo'; @@ -453,6 +453,12 @@ foreach my $value ([1,2,3], {1=>2}, *STDOUT{IO}, \&ok, *STDOUT{FORMAT}) { "PERL_DONT_CREATE_GVSV shouldn't affect thingy syntax under strict"); } +{ + # Bug reported by broquaint on IRC + *slosh::{HASH}->{ISA}=[]; + slosh->import; + pass("gv_fetchmeth coped with the unexpected"); +} __END__ Perl Rules |