From: Joel Brobecker Date: Thu, 14 Jun 2012 18:17:37 +0000 (+0000) Subject: Fix invalid profile for command-completer in remote-sim.c X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=34370865978b45c298ec3a9cee665b76660e5948;p=deliverable%2Fbinutils-gdb.git Fix invalid profile for command-completer in remote-sim.c The profile of command completers has been change to returna VEC of char_ptr. Most completers were updated, except the one in remote-sim.c. Unfortunately, to make things a little more difficult, the meat of the completer is actually implemented in the sim, were VECs are not available. This patch thus translates the returned array into a VEC, and then returns that VEC. gdb/ChangeLog: * remote-sim.c (sim_command_completer): Change type of return value to "VEC (char_ptr) *". Adjust implementation accordingly. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cdf6a01ea5..c16049c88f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-06-13 Joel Brobecker + + * remote-sim.c (sim_command_completer): Change type of return + value to "VEC (char_ptr) *". Adjust implementation accordingly. + 2012-06-13 Mark Kettenis Jan Kratochvil diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index 0e7d84e04b..11e1003b73 100644 --- a/gdb/remote-sim.c +++ b/gdb/remote-sim.c @@ -1198,16 +1198,28 @@ simulator_command (char *args, int from_tty) registers_changed (); } -static char ** +static VEC (char_ptr) * sim_command_completer (struct cmd_list_element *ignore, char *text, char *word) { struct sim_inferior_data *sim_data; + char **tmp; + int i; + VEC (char_ptr) *result; sim_data = inferior_data (current_inferior (), sim_inferior_data_key); if (sim_data == NULL || sim_data->gdbsim_desc == NULL) return NULL; - return sim_complete_command (sim_data->gdbsim_desc, text, word); + tmp = sim_complete_command (sim_data->gdbsim_desc, text, word); + if (tmp == NULL) + return NULL; + + /* Transform the array into a VEC, and then free the array. */ + for (i = 0; tmp[i] != NULL; i++) + VEC_safe_push (char_ptr, result, tmp[i]); + xfree (tmp); + + return result; } /* Check to see if a thread is still alive. */