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.
This commit is contained in:
Tom Tromey
2013-05-30 17:21:51 +00:00
parent a991ac289d
commit 0f900f54b5
2 changed files with 25 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2013-05-30 Tom Tromey <tromey@redhat.com>
* mipsread.c (read_alphacoff_dynamic_symtab): Call do_cleanups
along all return paths.
2013-05-30 Tom Tromey <tromey@redhat.com>
* symfile.c (find_separate_debug_file): Call do_cleanups

View File

@ -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. */