Skip to content
Snippets Groups Projects
Commit ee75ca6b authored by Tom Tromey's avatar Tom Tromey
Browse files

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.

parent a8deb832
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment