summaryrefslogtreecommitdiff
path: root/mro.c
diff options
context:
space:
mode:
Diffstat (limited to 'mro.c')
-rw-r--r--mro.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/mro.c b/mro.c
index a5f1de0ab0..4b90e6716b 100644
--- a/mro.c
+++ b/mro.c
@@ -985,15 +985,14 @@ S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes,
/* If oldstash is not null, then we can use its HvENAME to look up
the isarev hash, since all its subclasses will be listed there.
- If oldstash is null, then this is an empty spot with no stash in
- it, so subclasses could be listed in isarev hashes belonging to
- any of the names, so we have to check all of them. */
- if(oldstash) {
+ If oldstash is null or is no longer in the symbol table, then
+ this is an empty spot with no stash in it, so subclasses could
+ be listed in isarev hashes belonging to any of the names, so we
+ have to check all of them. */
+ char *hvename = oldstash ? HvENAME(oldstash) : NULL;
+ if (hvename) {
fetched_isarev = TRUE;
- svp
- = hv_fetch(
- PL_isarev, HvENAME(oldstash), HvENAMELEN_get(oldstash), 0
- );
+ svp = hv_fetch(PL_isarev, hvename, HvENAMELEN_get(oldstash), 0);
if (svp) isarev = MUTABLE_HV(*svp);
}
else if(SvTYPE(namesv) == SVt_PVAV) {