On Mon, Aug 19, 2013 at 06:07:10PM +0800, Tim Shen wrote:
> Before this patch, it causes the executor into infinite loop.
>
> Tested under x86_64. I'll test -m32 and check-debug before committing.

@@ -2371,8 +2372,10 @@
       if (__re._M_automaton == nullptr)
         return false;
       for (auto __cur = __first; __cur != __last; ++__cur) // Any KMP-like 
algo?
-        if (__detail::__get_executor(__cur, __last, __m, __re, __flags)
-              ->_M_search_from_first())
+        {
+          __detail::__get_executor(__cur, __last, __m, __re, __flags)
+            ->_M_search_from_first();
+          if (__m.size() > 0 && __m[0].matched)
           {
             for (auto __it : __m)
               if (!__it.matched)
@@ -2387,6 +2390,7 @@
               (__m.suffix().first != __m.suffix().second);
             return true;
           }

Doesn't everything in between the last added line above and the first added
line below need reindenting by 2 spaces (plus of course transforming any 8
consecutive spaces into tabs)?

+        }
       return false;
     }

        Jakub

Reply via email to