X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fstring%2Fstrstr.c;h=55ba1c7b45a0ef0b7087754684055aa0e84d27ce;hb=9b83182069cc3b213277104a992e195982060146;hp=915c0a22f6c239125bafbec63571519d9ac52bd7;hpb=571744447c23f91feb6439948f3a619aca850dfb;p=musl diff --git a/src/string/strstr.c b/src/string/strstr.c index 915c0a22..55ba1c7b 100644 --- a/src/string/strstr.c +++ b/src/string/strstr.c @@ -108,9 +108,8 @@ static char *twoway_strstr(const unsigned char *h, const unsigned char *n) /* Check last byte first; advance by shift on mismatch */ if (BITOP(byteset, h[l-1], &)) { 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 (k < mem) k = mem; h += k; mem = 0; continue; @@ -130,7 +129,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; }