From: Ulrich Drepper Date: Tue, 15 Jan 2008 19:11:51 +0000 (+0000) Subject: [BZ #5614] X-Git-Tag: cvs/fedora-glibc-20080131T0821~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ebca8f730eb78d3aaa0d245033556e0c9fb0ec35;p=platform%2Fupstream%2Fglibc.git [BZ #5614] 2008-01-15 Ulrich Drepper [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. --- diff --git a/ChangeLog b/ChangeLog index 3fa1637..92e86ae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-01-15 Ulrich Drepper + + [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. + 2008-01-12 Ulrich Drepper * po/ko.po: Update from translation team. diff --git a/string/bits/string2.h b/string/bits/string2.h index 6a18a1a..d298bed 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 , 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 diff --git a/string/tester.c b/string/tester.c index cccef3a..1c0efe0 100644 --- a/string/tester.c +++ b/string/tester.c @@ -1,5 +1,5 @@ /* Tester for string functions. - Copyright (C) 1995-2001, 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 1995-2001, 2003, 2005, 2008 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -840,9 +840,13 @@ test_strtok_r (void) equal(strtok_r((char *)NULL, ",", &cp), "c", 29); check(strtok_r((char *)NULL, ",", &cp) == NULL, 30); equal(one+6, "gh", 31); /* Stomped past end? */ - equal(one, "a", 32); /* Stomped old tokens? */ + equal(one, "a", 32); /* Stomped old tokens? */ equal(one+2, "b", 33); equal(one+4, "c", 34); + strcpy (one, ":::"); + cp = NULL; + check (strtok_r (one, ":", &cp) == NULL, 35); /* Must store pointer in cp. */ + check (strtok_r (NULL, ":", &cp) == NULL, 36); } static void