2011-03-05 Michael Snyder <msnyder@vmware.com>
authorMichael Snyder <msnyder@vmware.com>
Mon, 7 Mar 2011 19:44:19 +0000 (19:44 +0000)
committerMichael Snyder <msnyder@vmware.com>
Mon, 7 Mar 2011 19:44:19 +0000 (19:44 +0000)
* elfread.c (elf_symtab_read): Stop memory leak.

gdb/ChangeLog
gdb/elfread.c

index 85abd06bf814b36da363c8c490b6f651ae910d95..7f02c9bdf117b47b1b63b067be0771b9c00a9013 100644 (file)
@@ -1,5 +1,7 @@
 2011-03-06  Michael Snyder  <msnyder@vmware.com>
 
+       * elfread.c (elf_symtab_read): Stop memory leak.
+
        * main.c (captured_main): Fix memory leak.
 
 2011-03-07  Andreas Schwab  <schwab@linux-m68k.org>
index 59a1f7c6ad1d4f76b0d1aa5962bb0fa902faa504..e638a3676939147dc9af910373de04216f08a541 100644 (file)
@@ -243,6 +243,7 @@ elf_symtab_read (struct objfile *objfile, int type,
   char *filesymname = "";
   struct dbx_symfile_info *dbx = objfile->deprecated_sym_stab_info;
   int stripped = (bfd_get_symcount (objfile->obfd) == 0);
+  struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
 
   for (i = 0; i < number_of_symbols; i++)
     {
@@ -464,6 +465,7 @@ elf_symtab_read (struct objfile *objfile, int type,
                                  + (sizeof (CORE_ADDR) * max_index));
                          sectinfo = (struct stab_section_info *)
                            xmalloc (size);
+                         make_cleanup (xfree, sectinfo);
                          memset (sectinfo, 0, size);
                          sectinfo->num_sections = max_index;
                          if (filesym == NULL)
@@ -572,6 +574,7 @@ elf_symtab_read (struct objfile *objfile, int type,
            }
        }
     }
+  do_cleanups (back_to);
 }
 
 struct build_id