about summary refs log tree commit diff
path: root/string/bits
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2008-01-15 19:11:51 +0000
committerUlrich Drepper <drepper@redhat.com>2008-01-15 19:11:51 +0000
commitebca8f730eb78d3aaa0d245033556e0c9fb0ec35 (patch)
tree54f5894a3862cf25d0bcde542b5145a9309fcd7c /string/bits
parent7c33ca8bb39c9885abc06af05d7ef19d16eeef83 (diff)
downloadglibc-ebca8f730eb78d3aaa0d245033556e0c9fb0ec35.tar.gz
glibc-ebca8f730eb78d3aaa0d245033556e0c9fb0ec35.tar.xz
glibc-ebca8f730eb78d3aaa0d245033556e0c9fb0ec35.zip
[BZ #5614]
2008-01-15  Ulrich Drepper  <drepper@redhat.com>
	[BZ #5614]
	* string/bits/string2.h (__strtok_r_1c): Always update *__NEXTP.
	(__strtok_r): Simplify.
	* string/tester.c (test_strtok_r): Add test case for futile search
	with single-character seach string.
Diffstat (limited to 'string/bits')
-rw-r--r--string/bits/string2.h11
1 files changed, 5 insertions, 6 deletions
diff --git a/string/bits/string2.h b/string/bits/string2.h
index 6a18a1afc6..d298bed9f8 100644
--- a/string/bits/string2.h
+++ b/string/bits/string2.h
@@ -1,5 +1,5 @@
 /* Machine-independant string function optimizations.
-   Copyright (C) 1997-2003, 2004, 2007 Free Software Foundation, Inc.
+   Copyright (C) 1997-2003, 2004, 2007, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -1163,10 +1163,9 @@ __strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
 # ifndef _HAVE_STRING_ARCH_strtok_r
 #  define __strtok_r(s, sep, nextp) \
   (__extension__ (__builtin_constant_p (sep) && __string2_1bptr_p (sep)	      \
-		  ? (((__const char *) (sep))[0] != '\0'		      \
-		     && ((__const char *) (sep))[1] == '\0'		      \
-		     ? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp)  \
-		     : __strtok_r (s, sep, nextp))			      \
+		  && ((__const char *) (sep))[0] != '\0'		      \
+		  && ((__const char *) (sep))[1] == '\0'		      \
+		  ? __strtok_r_1c (s, ((__const char *) (sep))[0], nextp)     \
 		  : __strtok_r (s, sep, nextp)))
 # endif
 
@@ -1189,8 +1188,8 @@ __strtok_r_1c (char *__s, char __sep, char **__nextp)
 	    __s[-1] = '\0';
 	    break;
 	  }
-      *__nextp = __s;
     }
+  *__nextp = __s;
   return __result;
 }
 # if defined __USE_POSIX || defined __USE_MISC