]> granicus.if.org Git - onig/commitdiff
speed improvement of sunday_quick_search_step_forward()
authorK.Kosako <kosako@sofnec.co.jp>
Fri, 5 Oct 2018 08:17:52 +0000 (17:17 +0900)
committerK.Kosako <kosako@sofnec.co.jp>
Fri, 5 Oct 2018 08:17:52 +0000 (17:17 +0900)
src/regexec.c

index c1f19a4b1001c2b5c714a8e13858d5ff830f4341..530cc0617cc3090455e8dbdb63a12aeda3e5f5bd 100644 (file)
@@ -4124,12 +4124,15 @@ sunday_quick_search_step_forward(regex_t* reg,
   const UChar *tail;
   int skip, tlen1;
   int map_offset;
+  OnigEncoding enc;
 
 #ifdef ONIG_DEBUG_SEARCH
   fprintf(stderr,
           "sunday_quick_search_step_forward: text: %p, text_end: %p, text_range: %p\n", text, text_end, text_range);
 #endif
 
+  enc = reg->enc;
+
   tail = target_end - 1;
   tlen1 = (int )(tail - target);
   end = text_range;
@@ -4148,10 +4151,16 @@ sunday_quick_search_step_forward(regex_t* reg,
     }
     if (se + map_offset >= text_end) break;
     skip = reg->map[*(se + map_offset)];
+#if 0
     t = s;
     do {
-      s += enclen(reg->enc, s);
+      s += enclen(enc, s);
     } while ((s - t) < skip && s < end);
+#else
+    s += skip;
+    if (s < end)
+      s = onigenc_get_right_adjust_char_head(enc, text, s);
+#endif
   }
 
   return (UChar* )NULL;