X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=xs-src%2FMouseAccessor.xs;fp=xs-src%2FMouseAccessor.xs;h=66a4bdd2e0aa779a32c3238d3e8a3b502e0f139d;hp=3df9fdaf28223e65ac2dbc37d18e9699d53f0235;hb=8d33c73a2e27fce4a8275edc328471932144fd42;hpb=c8d7c63439275f27acb1e708137913ebae1b2913 diff --git a/xs-src/MouseAccessor.xs b/xs-src/MouseAccessor.xs index 3df9fda..66a4bdd 100644 --- a/xs-src/MouseAccessor.xs +++ b/xs-src/MouseAccessor.xs @@ -37,12 +37,14 @@ mouse_accessor_generate(pTHX_ SV* const attr, XSUBADDR_t const accessor_impl){ xsub = newXS(NULL, accessor_impl, __FILE__); sv_2mortal((SV*)xsub); - mg = sv_magicext((SV*)xsub, MOUSE_xa_slot(xa), PERL_MAGIC_ext, &mouse_accessor_vtbl, (char*)xa, HEf_SVKEY); + mg = sv_magicext((SV*)xsub, MOUSE_xa_slot(xa), + PERL_MAGIC_ext, &mouse_accessor_vtbl, (char*)xa, HEf_SVKEY); MOUSE_mg_flags(mg) = (U16)MOUSE_xa_flags(xa); /* NOTE: - * although we use MAGIC for gc, we also store mg to CvXSUBANY for efficiency (gfx) + * although we use MAGIC for gc, we also store mg to + * CvXSUBANY for efficiency (gfx) */ CvXSUBANY(xsub).any_ptr = (void*)mg; @@ -243,18 +245,21 @@ mouse_simple_accessor_generate(pTHX_ MAGIC* mg; if(!fq_name){ - /* anonymous xsubs need sv_2mortal */ + /* anonymous xsubs need sv_2mortal() */ sv_2mortal((SV*)xsub); } - mg = sv_magicext((SV*)xsub, slot, PERL_MAGIC_ext, &mouse_accessor_vtbl, (char*)dptr, dlen); + mg = sv_magicext((SV*)xsub, slot, + PERL_MAGIC_ext, &mouse_accessor_vtbl, (char*)dptr, dlen); + SvREFCNT_dec(slot); /* sv_magicext() increases refcnt in mg_obj */ if(dlen == HEf_SVKEY){ SvREFCNT_dec(dptr); } /* NOTE: - * although we use MAGIC for gc, we also store mg to CvXSUBANY for efficiency (gfx) + * although we use MAGIC for gc, we also store mg to CvXSUBANY + * for efficiency (gfx) */ CvXSUBANY(xsub).any_ptr = (void*)mg;