# HG changeset patch # User Bruno Haible # Date 1279466616 -7200 # Node ID f309a1831a5660cd0ff2a11ea71450fb5096ae31 # Parent 8c198b17bc8c9d3a9468e71a0819fd89fc2358cc unistr/u8-strchr: Optimize non-ASCII argument case. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-07-18 Bruno Haible + + unistr/u8-strchr: Optimize non-ASCII argument case. + * lib/unistr/u8-strchr.c (u8_strchr): Compare the last byte first, + because the first byte often matches anyway. + Reported by Pádraig Brady . + 2010-07-15 Karl Berry * config/srclist.txt (fdl.texi): only one copy, from gnustandards. diff --git a/lib/unistr/u8-strchr.c b/lib/unistr/u8-strchr.c --- a/lib/unistr/u8-strchr.c +++ b/lib/unistr/u8-strchr.c @@ -68,7 +68,7 @@ { if (s[1] == 0) goto notfound; - if (*s == c0 && s[1] == c1) + if (s[1] == c1 && *s == c0) break; } return (uint8_t *) s; @@ -86,7 +86,7 @@ { if (s[2] == 0) goto notfound; - if (*s == c0 && s[1] == c1 && s[2] == c2) + if (s[2] == c2 && s[1] == c1 && *s == c0) break; } return (uint8_t *) s; @@ -105,7 +105,7 @@ { if (s[3] == 0) goto notfound; - if (*s == c0 && s[1] == c1 && s[2] == c2 && s[3] == c3) + if (s[3] == c3 && s[2] == c2 && s[1] == c1 && *s == c0) break; } return (uint8_t *) s;