Re: localising hash element by variable
[p5sagit/p5-mst-13.2.git] / universal.c
index 9b0e12b..396dd3d 100644 (file)
  */
 
 STATIC bool
-S_isa_lookup(pTHX_ HV *stash, const char *name, const HV* const name_stash,
-             int len, int level)
+S_isa_lookup(pTHX_ HV *stash, const char * const name, const HV* const name_stash)
 {
     dVAR;
     AV* stash_linear_isa;
     SV** svp;
     const char *hvname;
     I32 items;
-    PERL_UNUSED_ARG(len);
-    PERL_UNUSED_ARG(level);
 
     /* A stash/class can go by many names (ie. User == main::User), so 
        we compare the stash itself just in case */
@@ -61,7 +58,7 @@ S_isa_lookup(pTHX_ HV *stash, const char *name, const HV* const name_stash,
     items = AvFILLp(stash_linear_isa);
     while (items--) {
        SV* const basename_sv = *svp++;
-        HV* basestash = gv_stashsv(basename_sv, 0);
+        HV* const basestash = gv_stashsv(basename_sv, 0);
        if (!basestash) {
            if (ckWARN(WARN_SYNTAX))
                Perl_warner(aTHX_ packWARN(WARN_SYNTAX),
@@ -110,7 +107,7 @@ Perl_sv_derived_from(pTHX_ SV *sv, const char *name)
 
     if (stash) {
        HV * const name_stash = gv_stashpv(name, 0);
-       return isa_lookup(stash, name, name_stash, strlen(name), 0);
+       return isa_lookup(stash, name, name_stash);
     }
     else
        return FALSE;
@@ -1101,7 +1098,7 @@ XS(XS_re_regname)
        }
         {
             if (SvPOK(sv) && re && re->paren_names) {
-                bufs = CALLREG_NAMEDBUF(re,sv,all && SvTRUE(all));
+                bufs = CALLREG_NAMEDBUF_FETCH(re,sv,all && SvTRUE(all));
                 if (bufs) {
                     if (all && SvTRUE(all))
                         XPUSHs(newRV(bufs));