diff options
author | Tom Tromey <tom@tromey.com> | 2016-10-11 20:02:23 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2016-10-21 14:17:39 -0600 |
commit | f60ee22ea1d62f7004511ec65a3ad76890032d88 (patch) | |
tree | 87b16bda9842bcb83666c81b97280c12cf23c2ef /gdb/main.c | |
parent | 192ca6d8eac4a5538036ef200b95d6ef3dbe9511 (diff) | |
download | gdb-f60ee22ea1d62f7004511ec65a3ad76890032d88.zip gdb-f60ee22ea1d62f7004511ec65a3ad76890032d88.tar.gz gdb-f60ee22ea1d62f7004511ec65a3ad76890032d88.tar.bz2 |
Remove last cleanup from captured_main_1
An earlier patch split captured_main into two parts. This patch
removes the last remaining cleanup from captured_main_1, and also
replaces a second hand-rolled VEC-like array with a std::vector.
2016-10-21 Tom Tromey <tom@tromey.com>
* main.c: Include <vector>.
(cmdarg_s): Remove typedef. Don't define VEC.
(captured_main_1): Use vector, not VEC. Remove cleanups.
Diffstat (limited to 'gdb/main.c')
-rw-r--r-- | gdb/main.c | 93 |
1 files changed, 40 insertions, 53 deletions
@@ -45,6 +45,7 @@ #include "event-top.h" #include "infrun.h" #include "signals-state-save-restore.h" +#include <vector> /* The selected interpreter. This will be used as a set command variable, so it should always be malloc'ed - since @@ -429,17 +430,14 @@ enum cmdarg_kind }; /* Arguments of --command option and its counterpart. */ -typedef struct cmdarg { +struct cmdarg { /* Type of this option. */ enum cmdarg_kind type; /* Value of this option - filename or the GDB command itself. String memory is not owned by this structure despite it is 'const'. */ char *string; -} cmdarg_s; - -/* Define type VEC (cmdarg_s). */ -DEF_VEC_O (cmdarg_s); +}; static void captured_main_1 (struct captured_main_args *context) @@ -467,15 +465,10 @@ captured_main_1 (struct captured_main_args *context) static int print_configuration; /* Pointers to all arguments of --command option. */ - VEC (cmdarg_s) *cmdarg_vec = NULL; - struct cmdarg *cmdarg_p; + std::vector<struct cmdarg> cmdarg_vec; - /* Indices of all arguments of --directory option. */ - char **dirarg; - /* Allocated size. */ - int dirsize; - /* Number of elements used. */ - int ndir; + /* All arguments of --directory option. */ + std::vector<char *> dirarg; /* gdb init files. */ const char *system_gdbinit; @@ -510,11 +503,6 @@ captured_main_1 (struct captured_main_args *context) notice_open_fds (); save_original_signals_state (); - chain = make_cleanup (VEC_cleanup (cmdarg_s), &cmdarg_vec); - dirsize = 1; - dirarg = (char **) xmalloc (dirsize * sizeof (*dirarg)); - ndir = 0; - saved_command_line = (char *) xstrdup (""); #ifdef __MINGW32__ @@ -746,28 +734,28 @@ captured_main_1 (struct captured_main_args *context) { struct cmdarg cmdarg = { CMDARG_FILE, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case 'X': { struct cmdarg cmdarg = { CMDARG_COMMAND, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case OPT_IX: { struct cmdarg cmdarg = { CMDARG_INIT_FILE, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case OPT_IEX: { struct cmdarg cmdarg = { CMDARG_INIT_COMMAND, optarg }; - VEC_safe_push (cmdarg_s, cmdarg_vec, &cmdarg); + cmdarg_vec.push_back (cmdarg); } break; case 'B': @@ -809,13 +797,7 @@ captured_main_1 (struct captured_main_args *context) interpreter_p = xstrdup (optarg); break; case 'd': - dirarg[ndir++] = optarg; - if (ndir >= dirsize) - { - dirsize *= 2; - dirarg = (char **) xrealloc ((char *) dirarg, - dirsize * sizeof (*dirarg)); - } + dirarg.push_back (optarg); break; case 't': ttyarg = optarg; @@ -1006,17 +988,21 @@ captured_main_1 (struct captured_main_args *context) catch_command_errors_const (source_script, home_gdbinit, 0); /* Process '-ix' and '-iex' options early. */ - for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++) - switch (cmdarg_p->type) + for (i = 0; i < cmdarg_vec.size (); i++) { - case CMDARG_INIT_FILE: - catch_command_errors_const (source_script, cmdarg_p->string, - !batch_flag); - break; - case CMDARG_INIT_COMMAND: - catch_command_errors (execute_command, cmdarg_p->string, - !batch_flag); - break; + const struct cmdarg &cmdarg_p = cmdarg_vec[i]; + + switch (cmdarg_p.type) + { + case CMDARG_INIT_FILE: + catch_command_errors_const (source_script, cmdarg_p.string, + !batch_flag); + break; + case CMDARG_INIT_COMMAND: + catch_command_errors (execute_command, cmdarg_p.string, + !batch_flag); + break; + } } /* Now perform all the actions indicated by the arguments. */ @@ -1025,9 +1011,8 @@ captured_main_1 (struct captured_main_args *context) catch_command_errors (cd_command, cdarg, 0); } - for (i = 0; i < ndir; i++) + for (i = 0; i < dirarg.size (); i++) catch_command_errors (directory_switch, dirarg[i], 0); - xfree (dirarg); /* Skip auto-loading section-specified scripts until we've sourced local_gdbinit (which is often used to augment the source search @@ -1116,17 +1101,21 @@ captured_main_1 (struct captured_main_args *context) load_auto_scripts_for_objfile (objfile); /* Process '-x' and '-ex' options. */ - for (i = 0; VEC_iterate (cmdarg_s, cmdarg_vec, i, cmdarg_p); i++) - switch (cmdarg_p->type) + for (i = 0; i < cmdarg_vec.size (); i++) { - case CMDARG_FILE: - catch_command_errors_const (source_script, cmdarg_p->string, - !batch_flag); - break; - case CMDARG_COMMAND: - catch_command_errors (execute_command, cmdarg_p->string, - !batch_flag); - break; + const struct cmdarg &cmdarg_p = cmdarg_vec[i]; + + switch (cmdarg_p.type) + { + case CMDARG_FILE: + catch_command_errors_const (source_script, cmdarg_p.string, + !batch_flag); + break; + case CMDARG_COMMAND: + catch_command_errors (execute_command, cmdarg_p.string, + !batch_flag); + break; + } } /* Read in the old history after all the command files have been @@ -1138,8 +1127,6 @@ captured_main_1 (struct captured_main_args *context) /* We have hit the end of the batch file. */ quit_force (NULL, 0); } - - do_cleanups (chain); } static void |