mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-19 20:34:41 +08:00
libcc1: fix a memory leak
libcc1 has a memory leak when calling fork_exec -- it allocates a new vector of arguments, but then does not free it anywhere. This patch changes this code to use std::vector instead. Note that the previous code tried to avoid bad_alloc. I don't believe this is very important. For one thing, plenty of other allocations do not bother with this. libcc1 * gdbctx.hh (do_compile): Use std::vector.
This commit is contained in:
parent
a8deb8323b
commit
ee75ca6b72
@ -308,15 +308,11 @@ namespace cc1_plugin
|
||||
|
||||
self->add_callbacks ();
|
||||
|
||||
char **argv = new (std::nothrow) char *[self->args.size () + 1];
|
||||
if (argv == NULL)
|
||||
return 0;
|
||||
|
||||
std::vector<char *> argv (self->args.size () + 1);
|
||||
for (unsigned int i = 0; i < self->args.size (); ++i)
|
||||
argv[i] = const_cast<char *> (self->args[i].c_str ());
|
||||
argv[self->args.size ()] = NULL;
|
||||
|
||||
return self->fork_exec (argv, fds, stderr_fds);
|
||||
return self->fork_exec (argv.data (), fds, stderr_fds);
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user