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;
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;
dMOUSE_self;
SV* const slot = MOUSE_mg_slot((MAGIC*)XSANY.any_ptr);
SV* value;
- SV* stash_ref;
HV* stash;
if(items == 1){ /* reader */
value = NULL; /* -Wuninitialized */
}
- stash_ref= mcall0(self, mouse_namespace);
- if(!(SvROK(stash_ref) && SvTYPE(SvRV(stash_ref)) == SVt_PVHV)) {
- croak("namespace() didn't return a HASH reference");
- }
- stash = (HV*)SvRV(stash_ref);
+ stash = mouse_get_namespace(aTHX_ self);
if(!value) { /* reader */
value = get_slot(self, slot);