This is the mail archive of the
newlib@sources.redhat.com
mailing list for the newlib project.
Re: libc/string/strrchr.c
- To: newlib at sources dot redhat dot com
- Subject: Re: libc/string/strrchr.c
- From: "J. Johnston" <jjohnstn at cygnus dot com>
- Date: Thu, 03 May 2001 20:00:03 -0400
- Organization: Red Hat Inc.
- References: <3AF1EB53.4EE0661@yahoo.com>
Earnie Boyd wrote:
>
> This patch improves Cygwin's speed greatly.
>
> Earnie.
>
Your patch needs a special case for the null terminator. Both strchr and strrchr treat the null
terminator as part of the string and allow searches for it. In your loop, the null terminator can
be found by strchr() but then you will increment s and will start searching beyond the end of the
string.
-- Jeff J.
> ----------------------------------------------------------------------------------------------------
> 2001-05-03 Earnie Boyd <earnie@users.sourceforge.net>
>
> * libc/string/strrchr.c: Use strchr for the speed improvements.
>
> Index: strrchr.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/string/strrchr.c,v
> retrieving revision 1.1.1.1
> diff -u -p -r1.1.1.1 strrchr.c
> --- strrchr.c 2000/02/17 19:39:48 1.1.1.1
> +++ strrchr.c 2001/05/03 23:27:52
> @@ -41,21 +41,12 @@ _DEFUN (strrchr, (s, i),
> int i)
> {
> _CONST char *last = NULL;
> - char c = i;
>
> - while (*s)
> + while (s=strchr(s, i))
> {
> - if (*s == c)
> - {
> - last = s;
> - }
> - s++;
> - }
> -
> - if (*s == c)
> - {
> last = s;
> + s++;
> }
> -
> +
> return (char *) last;
> }