diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-11-18 16:38:49 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-11-18 17:46:23 -0800 |
commit | 7d8b4ed398c3ccc6e5c4965c08a910c72d547f7f (patch) | |
tree | d4d1fe2f07a3f18e777a99726ccec803dcd83eef /util.c | |
parent | 107c452c64d52e8f29626debd8bdd4c5bc9a0e47 (diff) | |
download | perl-7d8b4ed398c3ccc6e5c4965c08a910c72d547f7f.tar.gz |
Fix pp_goto crash with orphaned GV
a7999c089 inadvertently made pp_goto crash if the GV had no
stash pointer.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -6555,7 +6555,10 @@ Perl_get_db_sub(pTHX_ SV **svp, CV *cv) if (!PERLDB_SUB_NN) { GV *gv = CvGV(cv); - if ( svp && ((CvFLAGS(cv) & (CVf_ANON | CVf_CLONED)) + if (!svp) { + gv_efullname3(dbsv, gv, NULL); + } + else if ( (CvFLAGS(cv) & (CVf_ANON | CVf_CLONED)) || strEQ(GvNAME(gv), "END") || ( /* Could be imported, and old sub redefined. */ (GvCV(gv) != cv || !S_gv_has_usable_name(aTHX_ gv)) @@ -6566,7 +6569,7 @@ Perl_get_db_sub(pTHX_ SV **svp, CV *cv) && S_gv_has_usable_name(aTHX_ gv = (GV *)*svp) ) ) - )) { + ) { /* GV is potentially non-unique, or contain different CV. */ SV * const tmp = newRV(MUTABLE_SV(cv)); sv_setsv(dbsv, tmp); |