Clean up how argv is stored in process_t

This commit is contained in:
ridiculousfish
2012-01-31 18:06:20 -08:00
parent 207ab2aa5b
commit beece6a828
7 changed files with 48 additions and 61 deletions

View File

@@ -183,6 +183,31 @@ void job_free( job_t * j )
halloc_free( j );
}
void process_t::free_argv(void) {
if (argv_array != NULL) {
for (size_t i = 0; argv_array[i] != NULL; i++) {
delete [] argv_array[i];
}
delete [] argv_array;
}
argv_array = NULL;
}
void process_t::set_argv(const wcstring_list_t &argv) {
/* Get rid of the old argv */
free_argv();
/* Allocate our null-terminated array of null-terminated strings */
size_t i, count = argv.size();
argv_array = new wchar_t* [count + 1];
for (i=0; i < count; i++) {
const wcstring &str = argv.at(i);
argv_array[i] = new wchar_t [1 + str.size()];
wcscpy(argv_array[i], str.c_str());
}
argv_array[i] = NULL;
}
void proc_destroy()
{
delete event.arguments;