XS constructor
[gitmo/Mouse.git] / xs-src / MouseUtil.xs
index 2e7f50b..c1d4d91 100644 (file)
@@ -197,11 +197,19 @@ mouse_call1 (pTHX_ SV *const self, SV *const method, SV* const arg1)
 }
 
 SV*
-mouse_get_metaclass_by_name(pTHX_ SV* const metaclass_name){
+mouse_get_metaclass(pTHX_ SV* metaclass_name){
     CV* const get_metaclass  = get_cvs("Mouse::Util::get_metaclass_by_name", TRUE);
     SV* metaclass;
     dSP;
 
+    assert(metaclass_name);
+    if(IsObject(metaclass_name)){
+        HV* const stash = SvSTASH(metaclass_name);
+
+        metaclass_name = newSVpvn_share(HvNAME_get(stash), HvNAMELEN_get(stash), 0U);
+        sv_2mortal(metaclass_name);
+    }
+
     PUSHMARK(SP);
     XPUSHs(metaclass_name);
     PUTBACK;