]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
* libltdl/ltdl.c (argz_create_sep): Don't forget to include the
authorGary V. Vaughan <gary@gnu.org>
Thu, 16 Aug 2001 00:48:52 +0000 (00:48 +0000)
committerGary V. Vaughan <gary@gnu.org>
Thu, 16 Aug 2001 00:48:52 +0000 (00:48 +0000)
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.

ChangeLog
libltdl/ltdl.c

index c7221f9d5a68f6201edd037e6e2c5dc9aa0288fd..cdf4d61a55fc9b06f141e9046f10d23085b90cd1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2001-08-16  Gary V. Vaughan  <gary@gnu.org>
+
+       * 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.
+
 2001-08-15  Gary V. Vaughan  <gary@gnu.org>
 
        * libltdl/ltdl.c (lt_dlhandle_next): Now we can loop through all
index ac6f23c5d33e319e565fc7c553b879654ef639fc..55dbc2e44a0fae3cf59030ed26fd57d7985341ba 100644 (file)
@@ -451,13 +451,13 @@ argz_create_sep (str, delim, pargz, pargz_len)
 
   /* 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 @@ argz_create_sep (str, delim, pargz, pargz_len)
          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 @@ argz_stringify (argz, argz_len, sep)
 
   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;