Fix memory corruption in Guile command interface

Re-registering a command will delete previous commands of the same name,
running the destroyer for the command object.  The Guile destroyer
incorrectly tried to xfree the name and other strings, which is invalid
as they are on the GC heap.

gdb/ChangeLog:

	* guile/scm-cmd.c (cmdscm_destroyer): Don't xfree the name and
	other strings, as these are on the GC'd heap, and will be
	collected along with the smob.
This commit is contained in:
Andy Wingo 2015-03-11 14:25:29 +01:00
parent 85642ba08c
commit 84a4591a7b
2 changed files with 6 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2015-03-11 Andy Wingo <wingo@igalia.com>
* guile/scm-cmd.c (cmdscm_destroyer): Don't xfree the name and
other strings, as these are on the GC'd heap, and will be
collected along with the smob.
2015-03-11 Andy Wingo <wingo@igalia.com>
* guile/scm-objfile.c (gdbscm_objfile_progspace): New function.

View File

@ -286,11 +286,6 @@ cmdscm_destroyer (struct cmd_list_element *self, void *context)
command_smob *c_smob = (command_smob *) context;
cmdscm_release_command (c_smob);
/* We allocated the name, doc string, and perhaps the prefix name. */
xfree ((char *) self->name);
xfree ((char *) self->doc);
xfree ((char *) self->prefixname);
}
/* Called by gdb to invoke the command. */