diff options
author | Roland McGrath <roland@gnu.org> | 2000-03-10 08:24:48 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2000-03-10 08:24:48 +0000 |
commit | f25da8d01f8d783fff627a95628a73b037526245 (patch) | |
tree | 034b8c9583e913480b07c8174b076b89e15302e0 | |
parent | 07760b357c8100172b81e7169d345834cb381ac8 (diff) | |
download | glibc-f25da8d01f8d783fff627a95628a73b037526245.tar.gz glibc-f25da8d01f8d783fff627a95628a73b037526245.tar.xz glibc-f25da8d01f8d783fff627a95628a73b037526245.zip |
* string/argz-stringify.c (__argz_stringify): Fix loop termination
conditions so as not to clobber the final '\0' when there is only one element in the vector.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | string/argz-stringify.c | 9 |
2 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 4e9b7ffa2d..ef6d64cfff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2000-02-23 Roland McGrath <roland@baalperazim.frob.com> + + * string/argz-stringify.c (__argz_stringify): Fix loop termination + conditions so as not to clobber the final '\0' when there is only one + element in the vector. + 2000-03-09 Roland McGrath <roland@baalperazim.frob.com> * io/sys/stat.h: Fix inverted sense of `defined __S_IFSOCK' test, diff --git a/string/argz-stringify.c b/string/argz-stringify.c index 0bbc807953..83ff119400 100644 --- a/string/argz-stringify.c +++ b/string/argz-stringify.c @@ -1,7 +1,7 @@ /* Routines for dealing with '\0' separated arg vectors. - Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc. + Copyright (C) 1995,96,97,2000 Free Software Foundation, Inc. This file is part of the GNU C Library. - Written by Miles Bader <miles@gnu.ai.mit.edu> + Written by Miles Bader <miles@gnu.org> The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -27,15 +27,14 @@ void __argz_stringify (char *argz, size_t len, int sep) { if (len > 0) - do + while (1) { size_t part_len = strnlen (argz, len); argz += part_len; len -= part_len; - if (len == 0) + if (len-- <= 1) /* includes final '\0' we want to stop at */ break; *argz++ = sep; } - while (--len > 0); } weak_alias (__argz_stringify, argz_stringify) |