Commit 8da53d45 authored by Rasmus Villemoes's avatar Rasmus Villemoes Committed by Linus Torvalds

lib/string.c: improve strrchr()

Instead of potentially passing over the string twice in case c is not
found, just keep track of the last occurrence.  According to
bloat-o-meter, this also cuts the generated code by a third (54 vs 36
bytes).  Oh, and we get rid of those 7-space indented lines.
Signed-off-by: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent fcc139ae
...@@ -313,12 +313,12 @@ EXPORT_SYMBOL(strchrnul); ...@@ -313,12 +313,12 @@ EXPORT_SYMBOL(strchrnul);
*/ */
char *strrchr(const char *s, int c) char *strrchr(const char *s, int c)
{ {
const char *p = s + strlen(s); const char *last = NULL;
do { do {
if (*p == (char)c) if (*s == (char)c)
return (char *)p; last = s;
} while (--p >= s); } while (*s++);
return NULL; return (char *)last;
} }
EXPORT_SYMBOL(strrchr); EXPORT_SYMBOL(strrchr);
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment