X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=mop.c;h=23ca98a9431a7abe6c57596b3cc7b118fd42e983;hb=d6e927d0ca41fc1cf21ab9790c8c2eb6bc42a6a0;hp=71c043fa55f0c9c6e0ff6eae84be12afa45f1079;hpb=38bf2a2585e26a47c919fd4c286b7716acb51c00;p=gitmo%2FMoose.git diff --git a/mop.c b/mop.c index 71c043f..23ca98a 100644 --- a/mop.c +++ b/mop.c @@ -95,12 +95,14 @@ mop_get_code_info (SV *coderef, char **pkg, char **name) */ if ( isGV_with_GP(CvGV(coderef)) ) { - GV *gv = CvGV(coderef); - *pkg = HvNAME( GvSTASH(gv) ? GvSTASH(gv) : CvSTASH(coderef) ); - *name = GvNAME( CvGV(coderef) ); + GV *gv = CvGV(coderef); + HV *stash = GvSTASH(gv) ? GvSTASH(gv) : CvSTASH(coderef); + + *pkg = stash ? HvNAME(stash) : "__UNKNOWN__"; + *name = GvNAME( CvGV(coderef) ); } else { - *pkg = "__UNKNOWN__"; - *name = "__ANON__"; + *pkg = "__UNKNOWN__"; + *name = "__ANON__"; } return 1; @@ -220,7 +222,8 @@ static struct { DECLARE_KEY(wrapped_method_metaclass), DECLARE_KEY(writer), DECLARE_KEY_WITH_VALUE(package_cache_flag, "_package_cache_flag"), - DECLARE_KEY_WITH_VALUE(_version, "-version") + DECLARE_KEY_WITH_VALUE(_version, "-version"), + DECLARE_KEY(operator) }; SV * @@ -246,7 +249,7 @@ mop_prehash_keys () } } -XS(mop_xs_simple_reader) +XS_EXTERNAL(mop_xs_simple_reader) { #ifdef dVAR dVAR; dXSARGS;