mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
Simplify write_inferior_memory
gdbserver's write_inferior_memory uses a static variable to avoid memory leaks, and has a comment referring to the lack of cleanups. This patch removes this comment and the code in favor of a straightforward use of std::vector. gdb/gdbserver/ChangeLog 2019-08-15 Tom Tromey <tromey@adacore.com> * target.c (write_inferior_memory): Use std::vector.
This commit is contained in:
parent
9177214a22
commit
c6778d00df
@ -1,3 +1,7 @@
|
||||
2019-08-15 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* target.c (write_inferior_memory): Use std::vector.
|
||||
|
||||
2019-08-06 Frank Ch. Eigler <fche@redhat.com>
|
||||
|
||||
PR build/24886
|
||||
|
@ -150,23 +150,11 @@ int
|
||||
write_inferior_memory (CORE_ADDR memaddr, const unsigned char *myaddr,
|
||||
int len)
|
||||
{
|
||||
/* Lacking cleanups, there is some potential for a memory leak if the
|
||||
write fails and we go through error(). Make sure that no more than
|
||||
one buffer is ever pending by making BUFFER static. */
|
||||
static unsigned char *buffer = 0;
|
||||
int res;
|
||||
|
||||
if (buffer != NULL)
|
||||
free (buffer);
|
||||
|
||||
buffer = (unsigned char *) xmalloc (len);
|
||||
memcpy (buffer, myaddr, len);
|
||||
check_mem_write (memaddr, buffer, myaddr, len);
|
||||
res = (*the_target->write_memory) (memaddr, buffer, len);
|
||||
free (buffer);
|
||||
buffer = NULL;
|
||||
|
||||
return res;
|
||||
/* Make a copy of the data because check_mem_write may need to
|
||||
update it. */
|
||||
std::vector<unsigned char> buffer (myaddr, myaddr + len);
|
||||
check_mem_write (memaddr, buffer.data (), myaddr, len);
|
||||
return (*the_target->write_memory) (memaddr, buffer.data (), len);
|
||||
}
|
||||
|
||||
/* See target/target.h. */
|
||||
|
Loading…
Reference in New Issue
Block a user