implement C<goto &func> and other fixes (via private mail)
[p5sagit/p5-mst-13.2.git] / doop.c
diff --git a/doop.c b/doop.c
index 8502d1a..c988bff 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -215,10 +215,9 @@ do_trans_UU_count(SV *sv)
     send = s + len;
 
     while (s < send) {
-       if ((uv = swash_fetch(rv, s)) < none) {
-           s += UTF8SKIP(s);
+       if ((uv = swash_fetch(rv, s)) < none)
            matches++;
-       }
+       s += UTF8SKIP(s);
     }
 
     return matches;
@@ -594,6 +593,7 @@ do_trans_UU_complex(SV *sv)
 I32
 do_trans(SV *sv)
 {
+    dTHR;
     STRLEN len;
 
     if (SvREADONLY(sv) && !(PL_op->op_private & OPpTRANS_IDENTICAL))
@@ -1061,7 +1061,7 @@ do_kv(ARGSproto)
            RETURN;
        }
 
-       if (!SvRMAGICAL(keys) || !mg_find((SV*)keys,'P'))
+       if (! SvTIED_mg((SV*)keys, 'P'))
            i = HvKEYS(keys);
        else {
            i = 0;