gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 5 May 2013 16:54:26 +0000 (16:54 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Sun, 5 May 2013 16:54:26 +0000 (16:54 +0000)
* event-top.c (display_gdb_prompt): Call missing do_cleanups.
* infcmd.c (get_return_value) <!stop_regs>: Do not overwrite CLEANUP.
* symfile.c (symfile_bfd_open): New variable back_to.  Do not leave
a stale cleanup.  Fix double free of NAME.

gdb/ChangeLog
gdb/event-top.c
gdb/infcmd.c
gdb/symfile.c

index 44d028e72d7106b2db54e7dafbe534ca27022bce..75b205c9f9534bd2389bfade22b0513b4f4f390a 100644 (file)
@@ -1,3 +1,10 @@
+2013-05-05  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       * event-top.c (display_gdb_prompt): Call missing do_cleanups.
+       * infcmd.c (get_return_value) <!stop_regs>: Do not overwrite CLEANUP.
+       * symfile.c (symfile_bfd_open): New variable back_to.  Do not leave
+       a stale cleanup.  Fix double free of NAME.
+
 2013-05-04  Eli Zaretskii  <eliz@gnu.org>
 
        * windows-nat.c (windows_delete_thread): Accept an additional
index 10f14993b554541430869509d1d2b37ed467710a..f00ab7d84e10d0a943ba807704c81e9b24d94ec6 100644 (file)
@@ -269,6 +269,7 @@ display_gdb_prompt (char *new_prompt)
             rl_callback_handler_remove(), does the job.  */
 
          rl_callback_handler_remove ();
+         do_cleanups (old_chain);
          return;
        }
       else
index af6a4db09511be1f378566ba23aaaf5da0ae96d6..11cdf6279376eefc8a476c4271b799601215572f 100644 (file)
@@ -1452,7 +1452,7 @@ get_return_value (struct value *function, struct type *value_type)
   if (!stop_regs)
     {
       stop_regs = regcache_dup (get_current_regcache ());
-      cleanup = make_cleanup_regcache_xfree (stop_regs);
+      make_cleanup_regcache_xfree (stop_regs);
     }
 
   gdbarch = get_regcache_arch (stop_regs);
index 979a8dd0a51cc141c2141a93daa19c8cd3204ed0..13740df0ea1a3f9ff95a5134e9c74974bbe3aef5 100644 (file)
@@ -1698,6 +1698,7 @@ symfile_bfd_open (char *name)
   bfd *sym_bfd;
   int desc;
   char *absolute_name;
+  struct cleanup *back_to;
 
   if (remote_filename_p (name))
     {
@@ -1739,15 +1740,12 @@ symfile_bfd_open (char *name)
 
   xfree (name);
   name = absolute_name;
-  make_cleanup (xfree, name);
+  back_to = make_cleanup (xfree, name);
 
   sym_bfd = gdb_bfd_open (name, gnutarget, desc);
   if (!sym_bfd)
-    {
-      make_cleanup (xfree, name);
-      error (_("`%s': can't open to read symbols: %s."), name,
-            bfd_errmsg (bfd_get_error ()));
-    }
+    error (_("`%s': can't open to read symbols: %s."), name,
+          bfd_errmsg (bfd_get_error ()));
   bfd_set_cacheable (sym_bfd, 1);
 
   if (!bfd_check_format (sym_bfd, bfd_object))
@@ -1757,6 +1755,8 @@ symfile_bfd_open (char *name)
             bfd_errmsg (bfd_get_error ()));
     }
 
+  do_cleanups (back_to);
+
   return sym_bfd;
 }