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 /string | |
parent | 07760b357c8100172b81e7169d345834cb381ac8 (diff) | |
download | glibc-f25da8d01f8d783fff627a95628a73b037526245.zip glibc-f25da8d01f8d783fff627a95628a73b037526245.tar.gz glibc-f25da8d01f8d783fff627a95628a73b037526245.tar.bz2 |
* 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.
Diffstat (limited to 'string')
-rw-r--r-- | string/argz-stringify.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/string/argz-stringify.c b/string/argz-stringify.c index 0bbc807..83ff119 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) |