gdbserver: cleanup in handle_v_run

After the previous commit there is now a redundant string copy in
handle_v_run, this commit cleans that up.

There should be no functional change after this commit.

During review I was pointed to this older series:

  https://inbox.sourceware.org/gdb-patches/20211022071933.3478427-1-m.weghorn@posteo.de/

which also includes this fix as part of a larger set of changes.  I'm
giving a Co-Authored-By credit to the author of that original series.
I believe this smaller fix brings some benefits on its own, though the
original series does offer additional improvements.  Once this is
merged I'll take a look at rebasing and resubmitting the original series.

Co-Authored-By: Michael Weghorn <m.weghorn@posteo.de>
Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
Andrew Burgess 2023-09-27 18:04:34 +01:00
parent 67e6945b7e
commit f9089d2f7b

View File

@ -2989,33 +2989,19 @@ handle_v_run (char *own_buf)
}
else
{
/* The length of the decoded argument. */
size_t len = (next_p - p) / 2;
/* ARG is the unquoted argument received via the RSP. */
/* Buffer to decode the argument into. */
char *arg = (char *) xmalloc (len + 1);
/* FULL_ARGS will contain the quoted version of ARG. */
char *full_arg = (char *) xmalloc ((len + 1) * 2);
/* These are pointers used to navigate the strings above. */
char *tmp_arg = arg;
char *tmp_full_arg = full_arg;
hex2bin (p, (gdb_byte *) arg, len);
arg[len] = '\0';
while (*tmp_arg != '\0')
{
*tmp_full_arg = *tmp_arg;
++tmp_full_arg;
++tmp_arg;
}
/* Finish FULL_ARG and push it into the vector containing
the argv. */
*tmp_full_arg = '\0';
if (i == 0)
new_program_name = full_arg;
new_program_name = arg;
else
new_argv.push_back (full_arg);
xfree (arg);
new_argv.push_back (arg);
}
if (*next_p == '\0')
break;