Re: [rfa] add_symbol_file_command, avoid memory leak.

Michael Snyder
2011-02-27T21:57:16Z

[-- Attachment #1: Type: text/plain, Size: 737 bytes --]

Jan Kratochvil wrote:
> On Sun, 27 Feb 2011 21:35:46 +0100, Michael Snyder wrote:
>> Jan Kratochvil wrote:
>>> While a nitpick it is a regression, that dont_repeat should be called even
>>> in the case of that error.
>> No, it's a fix. I moved the error before dont_repeat.
>
> Why? The manual says:
> `add-symbol-file' does not repeat if you press <RET> after using it.
> Other part of the manual says:
> and you can repeat certain GDB commands by typing just <RET>.
>
> There is nothing said that whether the command is / is not repated depends on
> its entered arguments.
>
> (Not sure if it matters to continue the discussion, I do not mind either way.)

Ah, sorry, I misunderstood you. I'm with you now.

How about this?

[-- Attachment #2: symfile2.txt --]
[-- Type: text/plain, Size: 968 bytes --]

2011-02-26 Michael Snyder <msnyder@vmware.com>

* symfile.c (add_symbol_file_command): Avoid memory leak.

Index: symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.307
diff -u -p -u -p -r1.307 symfile.c
--- symfile.c 26 Feb 2011 02:07:09 -0000 1.307
+++ symfile.c 27 Feb 2011 21:56:20 -0000
@@ -2169,15 +2169,15 @@ add_symbol_file_command (char *args, int
size_t num_sect_opts = 0;
struct cleanup *my_cleanups = make_cleanup (null_cleanup, NULL);

- num_sect_opts = 16;
- sect_opts = (struct sect_opt *) xmalloc (num_sect_opts
- * sizeof (struct sect_opt));
-
dont_repeat ();

if (args == NULL)
error (_("add-symbol-file takes a file name and an address"));

+ num_sect_opts = 16;
+ sect_opts = (struct sect_opt *) xmalloc (num_sect_opts
+ * sizeof (struct sect_opt));
+
argv = gdb_buildargv (args);
make_cleanup_freeargv (argv);