]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb: remove use of alloca in new_macro_definition
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 24 Jul 2024 19:07:15 +0000 (15:07 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 30 Jul 2024 12:52:57 +0000 (08:52 -0400)
Replace alloca with std::vector.

Change-Id: Ie8756da09126f6808e5b52c43388ad9324e8ad2c
Approved-By: Tom de Vries <tdevries@suse.de>
gdb/macrotab.c

index 81fe16576730313d0e5a3bc0554f6c702eeff816..21ec1522a900e16ede297e9c6d217e3f849678f1 100644 (file)
@@ -564,15 +564,14 @@ new_macro_definition (macro_table *t, macro_kind kind,
       d->argc = argv.size ();
 
       /* Bcache all the arguments.  */
-      int i = 0;
-      int cached_argv_size = argv.size () * sizeof (const char *);
-      const char **cached_argv = (const char **) alloca (cached_argv_size);
+      std::vector<const char *> cached_argv;
 
       for (const auto &arg : argv)
-       cached_argv[i++] = macro_bcache_str (t, arg.c_str ());
+       cached_argv.push_back (macro_bcache_str (t, arg.c_str ()));
 
       /* Now bcache the array of argument pointers itself.  */
-      d->argv = macro_bcache (t, cached_argv, cached_argv_size);
+      d->argv = macro_bcache (t, cached_argv.data (),
+                             cached_argv.size () * sizeof (const char *));
     }
   else
     d->argc = special_kind;