Buffers should not be re-allocated in such a case.
(memory leak detected by running memcheck on memcheck)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12410
dlog(1, "gdbserver_init gdbserver embedded in valgrind: %s\n", version);
noack_mode = False;
initialize_low ();
- own_buf = malloc (PBUFSIZ);
- mem_buf = malloc (PBUFSIZ);
+ // After a fork, gdbserver_init can be called again.
+ // We do not have to re-malloc the buffers in such a case.
+ if (own_buf == NULL)
+ own_buf = malloc (PBUFSIZ);
+ if (mem_buf == NULL)
+ mem_buf = malloc (PBUFSIZ);
}
void gdbserver_terminate (void)
void set_target_ops (struct target_ops *target)
{
- the_target = (struct target_ops *) malloc (sizeof (*the_target));
+ // Can be called again after a fork => do not re-malloc the_target.
+ if (the_target == NULL)
+ the_target = (struct target_ops *) malloc (sizeof (*the_target));
VG_(memcpy) (the_target, target, sizeof (*the_target));
}