about summary refs log tree commit diff
path: root/string/argz-stringify.c
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2000-03-10 08:24:48 +0000
committerRoland McGrath <roland@gnu.org>2000-03-10 08:24:48 +0000
commitf25da8d01f8d783fff627a95628a73b037526245 (patch)
tree034b8c9583e913480b07c8174b076b89e15302e0 /string/argz-stringify.c
parent07760b357c8100172b81e7169d345834cb381ac8 (diff)
downloadglibc-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.
Diffstat (limited to 'string/argz-stringify.c')
-rw-r--r--string/argz-stringify.c9
1 files changed, 4 insertions, 5 deletions
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)