fix spuriously slow check in twoway strstr/memmem cores
[musl] / src / string / strstr.c
index 915c0a2..c80e9ca 100644 (file)
@@ -110,7 +110,7 @@ static char *twoway_strstr(const unsigned char *h, const unsigned char *n)
                        k = l-shift[h[l-1]];
                        //printf("adv by %zu (on %c) at [%s] (%zu;l=%zu)\n", k, h[l-1], h, shift[h[l-1]], l);
                        if (k) {
-                               if (mem0 && mem && k < p) k = l-p;
+                               if (mem && k < p) k = l-p;
                                h += k;
                                mem = 0;
                                continue;
@@ -130,7 +130,7 @@ static char *twoway_strstr(const unsigned char *h, const unsigned char *n)
                }
                /* Compare left half */
                for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--);
-               if (k == mem) return (char *)h;
+               if (k <= mem) return (char *)h;
                h += p;
                mem = mem0;
        }