summaryrefslogtreecommitdiff
path: root/hv.h
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2013-08-17 23:58:47 -0700
committerFather Chrysostomos <sprout@cpan.org>2013-08-17 23:58:47 -0700
commitc716b3beb77406159d18fd52251821fee641f9fc (patch)
treeb3304d82ae5b06d3fb56209a905aaf1554e33599 /hv.h
parentbe9260535f65befe9615312821574755a8d04344 (diff)
downloadperl-c716b3beb77406159d18fd52251821fee641f9fc.tar.gz
[perl #114864] Make UNIVERSAL::DESTROY changes invalidate caches
Commit 8c34e50d inadvertently caused DESTROY caches not to be reset when UNIVERSAL::DESTROY changes. Normally, a change to a method will cause mro_method_changed_in to be called on all subclasses, but mro.c cheats for UNIVERSAL and just does ++PL_sub_generation. So clearing the DESTROY cache explicitly in mro_method_changed_in is clearly not enough.
Diffstat (limited to 'hv.h')
-rw-r--r--hv.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/hv.h b/hv.h
index 6ebd5d56d3..47432e34ba 100644
--- a/hv.h
+++ b/hv.h
@@ -81,6 +81,7 @@ struct mro_meta {
U32 pkg_gen; /* Bumps when local methods/@ISA change */
const struct mro_alg *mro_which; /* which mro alg is in use? */
HV *isa; /* Everything this class @ISA */
+ U32 destroy_gen; /* Generation number of DESTROY cache */
};
#define MRO_GET_PRIVATE_DATA(smeta, which) \