This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 24/40] fix mipsread.c


Some code in mipsread.c could leak cleanups along some return paths.

	* mipsread.c (read_alphacoff_dynamic_symtab): Call do_cleanups
	along all return paths.
---
 gdb/mipsread.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/gdb/mipsread.c b/gdb/mipsread.c
index e9f0402..b425780b 100644
--- a/gdb/mipsread.c
+++ b/gdb/mipsread.c
@@ -227,16 +227,28 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets,
 
   if (!bfd_get_section_contents (abfd, si.sym_sect, sym_secptr,
 				 (file_ptr) 0, sym_secsize))
-    return;
+    {
+      do_cleanups (cleanups);
+      return;
+    }
   if (!bfd_get_section_contents (abfd, si.str_sect, str_secptr,
 				 (file_ptr) 0, str_secsize))
-    return;
+    {
+      do_cleanups (cleanups);
+      return;
+    }
   if (!bfd_get_section_contents (abfd, si.dyninfo_sect, dyninfo_secptr,
 				 (file_ptr) 0, dyninfo_secsize))
-    return;
+    {
+      do_cleanups (cleanups);
+      return;
+    }
   if (!bfd_get_section_contents (abfd, si.got_sect, got_secptr,
 				 (file_ptr) 0, got_secsize))
-    return;
+    {
+      do_cleanups (cleanups);
+      return;
+    }
 
   /* Find the number of local GOT entries and the index for the
      first dynamic symbol in the GOT.  */
@@ -264,7 +276,10 @@ read_alphacoff_dynamic_symtab (struct section_offsets *section_offsets,
 	}
     }
   if (dt_mips_local_gotno < 0 || dt_mips_gotsym < 0)
-    return;
+    {
+      do_cleanups (cleanups);
+      return;
+    }
 
   /* Scan all dynamic symbols and enter them into the minimal symbol
      table if appropriate.  */
-- 
1.8.1.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]