pp_match: simplify pos()-getting code
authorDavid Mitchell <davem@iabyn.com>
Wed, 10 Jul 2013 10:13:38 +0000 (11:13 +0100)
committerDavid Mitchell <davem@iabyn.com>
Sun, 28 Jul 2013 09:33:37 +0000 (10:33 +0100)
The previous commit removed the \G handling from pp_match; most of what's
left in that code block is redundant code that just sets curpos under all
conditions. So tidy it up.

pp_hot.c

index ee740c2..d1111fa 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1383,24 +1383,17 @@ PP(pp_match)
        goto nope;
     }
 
-    /* XXXX What part of this is needed with true \G-support? */
+    /* get pos() if //g */
     if (global) {
-       MAGIC * const mg = mg_find_mglob(TARG);
-       if (mg && mg->mg_len >= 0) {
-               if (!(RX_EXTFLAGS(rx) & RXf_GPOS_SEEN))
-                   curpos = mg->mg_len;
-               else if (RX_EXTFLAGS(rx) & RXf_ANCH_GPOS) {
-                   curpos = mg->mg_len;
-               }
-               else if (!(RX_EXTFLAGS(rx) & RXf_GPOS_FLOAT))
-                   curpos = mg->mg_len;
-                else
-                    curpos = mg->mg_len;
-                /* last time pos() was set, it was zero-length match */
-               if (mg->mg_flags & MGf_MINMATCH)
-                    had_zerolen = 1;
-       }
+        MAGIC * const mg = mg_find_mglob(TARG);
+        if (mg && mg->mg_len >= 0) {
+            curpos = mg->mg_len;
+            /* last time pos() was set, it was zero-length match */
+            if (mg->mg_flags & MGf_MINMATCH)
+                had_zerolen = 1;
+        }
     }
+
 #ifdef PERL_SAWAMPERSAND
     if (       RX_NPARENS(rx)
             || PL_sawampersand