[svn:ponie] r343 - trunk/src/pmc

[email protected] 25 Aug 2005 15:45:10 -0000
Newsgroups perl.ponie.changes
Message-ID <[email protected]>
Author: nicholas
Date: Thu Aug 25 08:45:09 2005
New Revision: 343

Modified:
   trunk/src/pmc/perl5cargo_cult.pmc
Log:
Use sv_clear_backend to avoid direct SvREFCNT_set() games in Ponie_P_REPLACE


Modified: trunk/src/pmc/perl5cargo_cult.pmc
==============================================================================
--- trunk/src/pmc/perl5cargo_cult.pmc	(original)
+++ trunk/src/pmc/perl5cargo_cult.pmc	Thu Aug 25 08:45:09 2005
@@ -657,7 +657,6 @@ pmclass Perl5cargo_cult dynpmc {
                 SV *sv = MUMBLE(SELF);
                 SV *nsv = value;
 
-                U32 refcnt = SvREFCNT(sv);
                 int type = SvTYPE(nsv);
 
                 SV_CHECK_THINKFIRST_COW_DROP(sv);
@@ -675,10 +674,7 @@ pmclass Perl5cargo_cult dynpmc {
                     SvMAGICAL_off(sv);
                     SvMAGIC_set(sv, 0);
                 }
-                SvREFCNT_set(sv, 0);
-                sv_clear(sv);
-                assert(!SvREFCNT(sv));
-                SvREFCNT_set(sv, SvREFCNT(nsv));
+                sv_clear_backend(sv, 0);
                 PERL5_FLAGS(SELF) = SvFLAGS(nsv);
                 SvANY_set(sv, SvANY(nsv));
                 /* Because the SV data structure is rearranged */
@@ -691,7 +687,6 @@ pmclass Perl5cargo_cult dynpmc {
 
                 SELF->vtable = ((PMC *)MUMBLE(value))->vtable;
 
-                PERL5_REFCNT(SELF) = refcnt;
                 SvREFCNT_set(nsv, 0);
                 Parrot_PMC_set_pointer_intkey(PL_Parrot, MUMBLE(nsv),
                                               Ponie_P_PINE_FOR_FJORDS, 0);