Replace alloca with xmalloc/free
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 29 Aug 2012 00:45:49 +0000 (00:45 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 29 Aug 2012 00:45:49 +0000 (00:45 +0000)
PR binutils/14526
* argv.c (buildargv): Replace alloca with xmalloc/free.

libiberty/ChangeLog
libiberty/argv.c

index 0b720e7..f06dcb5 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/14526
+       * argv.c (buildargv): Replace alloca with xmalloc/free.
+
 2012-08-17  Andreas Schwab  <schwab@linux-m68k.org>
 
        * floatformat.c (floatformat_to_double): Correctly handle numbers
index ca53f91..4cef3bc 100644 (file)
@@ -191,7 +191,7 @@ char **buildargv (const char *input)
 
   if (input != NULL)
     {
-      copybuf = (char *) alloca (strlen (input) + 1);
+      copybuf = (char *) xmalloc (strlen (input) + 1);
       /* Is a do{}while to always execute the loop once.  Always return an
         argv, even for null strings.  See NOTES above, test case below. */
       do
@@ -297,6 +297,8 @@ char **buildargv (const char *input)
          consume_whitespace (&input);
        }
       while (*input != EOS);
+
+      free (copybuf);
     }
   return (argv);
 }