mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-26 22:07:58 +08:00
Re: Memory leak in dwarf2.c
PR 11983 * dwarf2.c (read_alt_indirect_string): Free debug_filename on success. Tidy. (read_alt_indirect_ref): Likewise.
This commit is contained in:
@ -3,6 +3,8 @@
|
||||
PR 11983
|
||||
* dwarf2.c (_bfd_dwarf2_slurp_debug_info): Free debug_filename
|
||||
on success. Tidy.
|
||||
(read_alt_indirect_string): Likewise.
|
||||
(read_alt_indirect_ref): Likewise.
|
||||
|
||||
2019-08-31 Jim Wilson <jimw@sifive.com>
|
||||
|
||||
|
38
bfd/dwarf2.c
38
bfd/dwarf2.c
@ -802,20 +802,21 @@ read_alt_indirect_string (struct comp_unit * unit,
|
||||
|
||||
if (stash->alt_bfd_ptr == NULL)
|
||||
{
|
||||
bfd * debug_bfd;
|
||||
char * debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
|
||||
bfd *debug_bfd;
|
||||
char *debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
|
||||
|
||||
if (debug_filename == NULL)
|
||||
return NULL;
|
||||
|
||||
if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
|
||||
|| ! bfd_check_format (debug_bfd, bfd_object))
|
||||
{
|
||||
if (debug_bfd)
|
||||
bfd_close (debug_bfd);
|
||||
|
||||
/* FIXME: Should we report our failure to follow the debuglink ? */
|
||||
debug_bfd = bfd_openr (debug_filename, NULL);
|
||||
free (debug_filename);
|
||||
if (debug_bfd == NULL)
|
||||
/* FIXME: Should we report our failure to follow the debuglink ? */
|
||||
return NULL;
|
||||
|
||||
if (!bfd_check_format (debug_bfd, bfd_object))
|
||||
{
|
||||
bfd_close (debug_bfd);
|
||||
return NULL;
|
||||
}
|
||||
stash->alt_bfd_ptr = debug_bfd;
|
||||
@ -850,20 +851,21 @@ read_alt_indirect_ref (struct comp_unit * unit,
|
||||
|
||||
if (stash->alt_bfd_ptr == NULL)
|
||||
{
|
||||
bfd * debug_bfd;
|
||||
char * debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
|
||||
bfd *debug_bfd;
|
||||
char *debug_filename = bfd_follow_gnu_debugaltlink (unit->abfd, DEBUGDIR);
|
||||
|
||||
if (debug_filename == NULL)
|
||||
return FALSE;
|
||||
|
||||
if ((debug_bfd = bfd_openr (debug_filename, NULL)) == NULL
|
||||
|| ! bfd_check_format (debug_bfd, bfd_object))
|
||||
{
|
||||
if (debug_bfd)
|
||||
bfd_close (debug_bfd);
|
||||
|
||||
/* FIXME: Should we report our failure to follow the debuglink ? */
|
||||
debug_bfd = bfd_openr (debug_filename, NULL);
|
||||
free (debug_filename);
|
||||
if (debug_bfd == NULL)
|
||||
/* FIXME: Should we report our failure to follow the debuglink ? */
|
||||
return NULL;
|
||||
|
||||
if (!bfd_check_format (debug_bfd, bfd_object))
|
||||
{
|
||||
bfd_close (debug_bfd);
|
||||
return NULL;
|
||||
}
|
||||
stash->alt_bfd_ptr = debug_bfd;
|
||||
|
Reference in New Issue
Block a user