Skip class unload stuff in global destruction
[gitmo/Mouse.git] / xs-src / Mouse.xs
index 70366c8..8cab310 100644 (file)
@@ -403,8 +403,8 @@ CODE:
         SV*  sv = code_ref;  /* used in tryAMAGICunDEREF */
         SV** sp = &sv;       /* used in tryAMAGICunDEREF */
         tryAMAGICunDEREF(to_cv); /* try \&{$code} */
-        if(SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV){
-            mouse_throw_error(self, NULL, "Not a CODE reference");
+        if(!(SvROK(sv) && SvTYPE(SvRV(sv)) == SVt_PVCV)){
+            mouse_throw_error(self, NULL, "You must pass a CODE reference to add_method");
         }
         code_ref = sv;
     }
@@ -483,7 +483,7 @@ PPCODE:
 }
 
 SV*
-new_object_(SV* meta, ...)
+new_object(SV* meta, ...)
 CODE:
 {
     AV* const xc   = mouse_get_xc(aTHX_ meta);
@@ -492,7 +492,8 @@ CODE:
     RETVAL = mouse_instance_create(aTHX_ MOUSE_xc_stash(xc));
     mouse_class_initialize_object(aTHX_ meta, RETVAL, args, FALSE);
 }
-
+OUTPUT:
+    RETVAL
 
 void
 _initialize_object(SV* meta, SV* object, HV* args, bool ignore_triggers = FALSE)
@@ -559,7 +560,7 @@ CODE:
 
         PUSHMARK(SP);
         EXTEND(SP, 2);
-        PUSHs(RETVAL);
+        PUSHs(RETVAL); /* self */
         PUSHs(args);
         PUTBACK;