diff options
author | Andrew Burgess <aburgess@redhat.com> | 2023-09-27 18:04:34 +0100 |
---|---|---|
committer | Andrew Burgess <aburgess@redhat.com> | 2023-10-06 13:02:36 +0100 |
commit | f9089d2f7b7d164e6747dc85fb683975119d3bff (patch) | |
tree | cce0d295784ac38d7c73561053f3175d4d07d863 /gdbserver | |
parent | 67e6945b7e3a5c1577d19b9d83ee9be86c0a8424 (diff) | |
download | gdb-f9089d2f7b7d164e6747dc85fb683975119d3bff.zip gdb-f9089d2f7b7d164e6747dc85fb683975119d3bff.tar.gz gdb-f9089d2f7b7d164e6747dc85fb683975119d3bff.tar.bz2 |
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>
Diffstat (limited to 'gdbserver')
-rw-r--r-- | gdbserver/server.cc | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/gdbserver/server.cc b/gdbserver/server.cc index 84b8712..e02cdb8 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -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; |