提交 8da53d45 编写于 作者: R Rasmus Villemoes 提交者: 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: NRasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册