Index: ChangeLog from Gary V. Vaughan * libltdl/ltdl.c (argz_create_sep): Don't forget to include the terminating '\0' when counting argz_len. (argz_create_sep): When canonicalizing argz, don't forget to copy the terminating '\0', incase canonicalization has shortened argz. (argz_stringify): Don't covert the final '\0' to a separator. Index: libltdl/ltdl.c =================================================================== RCS file: /cvsroot/libtool/libtool/libltdl/ltdl.c,v retrieving revision 1.151 diff -b -u -r1.151 ltdl.c --- libltdl/ltdl.c 2001/08/15 00:23:22 1.151 +++ libltdl/ltdl.c 2001/08/16 00:20:48 @@ -451,13 +451,13 @@ /* Make a copy of STR, but replacing each occurence of DELIM with '\0'. */ - argz_len = LT_STRLEN (str); + argz_len = 1+ LT_STRLEN (str); if (argz_len) { const char *p; char *q; - argz = LT_DLMALLOC (char, 1+ argz_len); + argz = LT_DLMALLOC (char, argz_len); if (!argz) return ENOMEM; @@ -475,6 +475,8 @@ else *q++ = *p; } + /* Copy terminating LT_EOS_CHAR. */ + *q = *p; } /* If ARGZ_LEN has shrunk to nothing, release ARGZ's memory. */ @@ -613,7 +615,8 @@ if (sep) { - while (--argz_len >= 0) + --argz_len; /* don't stringify the terminating EOS */ + while (--argz_len > 0) { if (argz[argz_len] == LT_EOS_CHAR) argz[argz_len] = sep;