From 1999031e0438e50a8037d2e3022a55c4db94637a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 21 Feb 2001 15:39:07 +0000 Subject: [PATCH] Update. 2001-02-21 Ulrich Drepper * sysdeps/i386/i686/strtok.S: Continue to return NULL after the first time this happened. 2001-02-21 Andreas Jaeger * string/tst-strtok.c: New testcase, reported by Andrew Church . --- ChangeLog | 10 ++++++++++ string/tst-strtok.c | 23 +++++++++++++++++++++++ sysdeps/i386/i686/strtok.S | 4 +++- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 string/tst-strtok.c diff --git a/ChangeLog b/ChangeLog index 9b9f2e945c..c09932b8af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-02-21 Ulrich Drepper + + * sysdeps/i386/i686/strtok.S: Continue to return NULL after the + first time this happened. + +2001-02-21 Andreas Jaeger + + * string/tst-strtok.c: New testcase, reported by + Andrew Church . + 2001-02-20 Ulrich Drepper * libio/iofwide.c: Remove fwide alias. diff --git a/string/tst-strtok.c b/string/tst-strtok.c new file mode 100644 index 0000000000..ed3400d820 --- /dev/null +++ b/string/tst-strtok.c @@ -0,0 +1,23 @@ +/* Testcase for strtok reported by Andrew Church . */ +#include +#include + +int +main (void) +{ + char buf[1] = { 0 }; + int result = 0; + + if (strtok (buf, " ") != NULL) + { + puts ("first strtok call did return NULL"); + result = 1; + } + else if (strtok (NULL, " ") != NULL) + { + puts ("second strtok call did return NULL"); + result = 1; + } + + return result; +} diff --git a/sysdeps/i386/i686/strtok.S b/sysdeps/i386/i686/strtok.S index a982a4aa49..e21b5f65e6 100644 --- a/sysdeps/i386/i686/strtok.S +++ b/sysdeps/i386/i686/strtok.S @@ -1,6 +1,6 @@ /* strtok (str, delim) -- Return next DELIM separated token from STR. For Intel 80686. - Copyright (C) 1998, 2000 Free Software Foundation, Inc. + Copyright (C) 1998, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -123,6 +123,8 @@ ENTRY (BP_SYM (FUNCTION)) the last run. */ cmpl $0, %edx cmove %eax, %edx + testl %edx, %edx + jz L(returnNULL) #if __BOUNDED_POINTERS__ # ifdef USE_AS_STRTOK_R movl SAVE(%esp), %ecx /* borrow %ecx for a moment */