X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=xs-src%2FMouseAttribute.xs;h=a7bb4d45fabbd6b352669a2880cd7fab46c82863;hp=62b259347422bd48fdd506478b37882f1284c79a;hb=3f2c3dc70ab19ea75f2bb67af78f60d31134f725;hpb=1e5823974a557bd35b4aa4a5c1d1aecf1e5483d2 diff --git a/xs-src/MouseAttribute.xs b/xs-src/MouseAttribute.xs index 62b2593..a7bb4d4 100644 --- a/xs-src/MouseAttribute.xs +++ b/xs-src/MouseAttribute.xs @@ -142,6 +142,9 @@ mouse_xa_set_default(pTHX_ AV* const xa, SV* const object) { U16 const flags = (U16)MOUSE_xa_flags(xa); SV* value; + ENTER; + SAVETMPS; + /* get default value by $attr->builder or $attr->default */ if(flags & MOUSEf_ATTR_HAS_BUILDER){ SV* const builder = mcall0s(MOUSE_xa_attribute(xa), "builder"); @@ -162,11 +165,13 @@ mouse_xa_set_default(pTHX_ AV* const xa, SV* const object) { /* store value to slot */ value = set_slot(object, MOUSE_xa_slot(xa), value); - if(flags & MOUSEf_ATTR_IS_WEAK_REF && SvROK(value)){ weaken_slot(object, MOUSE_xa_slot(xa)); } + FREETMPS; + LEAVE; + return value; }