overhaul optimized x86_64 memset asm
[musl] / src / string / memmem.c
index a5a249f..d7e1221 100644 (file)
@@ -112,15 +112,15 @@ static char *twoway_memmem(const unsigned char *h, const unsigned char *z, const
                }
 
                /* Compare right half */
-               for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++);
-               if (n[k]) {
+               for (k=MAX(ms+1,mem); k<l && n[k] == h[k]; k++);
+               if (k < l) {
                        h += k-ms;
                        mem = 0;
                        continue;
                }
                /* 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;
        }