From 0f900f54b53296119cd3386d919f52d0d6ba655e Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 30 May 2013 17:21:51 +0000 Subject: 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(-) (limited to 'gdb/mipsread.c') diff --git a/gdb/mipsread.c b/gdb/mipsread.c index e9f0402..b425780 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. */ -- cgit v1.1