diff options
author | David Mitchell <davem@iabyn.com> | 2010-07-05 20:40:33 +0100 |
---|---|---|
committer | David Mitchell <davem@iabyn.com> | 2010-07-14 23:06:17 +0100 |
commit | 4c74a7df3242aa95d62dcfbcc231b8a55cc03c59 (patch) | |
tree | 40e1d5a912f0d7cfb9868075dda2ee1c5dcfcb7a /global.sym | |
parent | e3d2b9e76ba8553f994404cc1438760e83dd8b76 (diff) | |
download | perl-4c74a7df3242aa95d62dcfbcc231b8a55cc03c59.tar.gz |
protect CvSTASH weakref with backrefs
Each CV usually has a pointer, CvSTASH, back to the stash that it was
complied in. This pointer isn't reference counted, to avoid loops. Which
can leave it dangling if the stash is deleted.
There is already protection for the similar GvSTASH field in GVs: the
stash has an array of backrefs, xhv_backreferences, pointing to the GVs
whose GvSTASHes point to it, and which is used to zero all the GvSTASH
fields should the stash be deleted.
All this patch does is also add the CVs with CvSTASH to that stash's
backref list too.
Diffstat (limited to 'global.sym')
-rw-r--r-- | global.sym | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/global.sym b/global.sym index db01b92891..cfdb93dd9b 100644 --- a/global.sym +++ b/global.sym @@ -752,6 +752,7 @@ Perl_sv_nounlocking Perl_nothreadhook Perl_Slab_Alloc Perl_Slab_Free +Perl_sv_del_backref Perl_sv_setsv_flags Perl_sv_catpvn_flags Perl_sv_catsv_flags |