]> git.vpit.fr Git - perl/modules/Scope-Upper.git/commitdiff
In su_cv_clone(), add stash->cloned_cv backrefs on perl 5.13.x
authorVincent Pit <vince@profvince.com>
Tue, 13 Sep 2011 17:34:16 +0000 (19:34 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 13 Sep 2011 17:35:57 +0000 (19:35 +0200)
This fixes test failures on debugging perl 5.13.[456].

Upper.xs

index bb380fe56e97cf591671543ff52478813c599dc7..cff207a5fe8547b496d05cbf29c6ed8b4ec0f9ce 100644 (file)
--- a/Upper.xs
+++ b/Upper.xs
@@ -1179,6 +1179,13 @@ STATIC CV *su_cv_clone(pTHX_ CV *proto, GV *gv) {
 
  CvGV_set(cv, gv);
  CvSTASH_set(cv, CvSTASH(proto));
+ /* Commit 4c74a7df, publicized with perl 5.13.3, began to add backrefs to
+  * stashes. CvSTASH_set() started to do it as well with commit c68d95645
+  * (which was part of perl 5.13.7). */
+#if SU_HAS_PERL(5, 13, 3) && !SU_HAS_PERL(5, 13, 7)
+ if (CvSTASH(proto))
+  Perl_sv_add_backref(aTHX_ CvSTASH(proto), MUTABLE_SV(cv));
+#endif
 
  OP_REFCNT_LOCK;
  CvROOT(cv)        = OpREFCNT_inc(CvROOT(proto));