diff options
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/dwarf2.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 450217a..c465462 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,10 @@ 2017-09-24 Alan Modra <amodra@gmail.com> + PR 22191 + * dwarf2.c (decode_line_info): Properly free line sequences on error. + +2017-09-24 Alan Modra <amodra@gmail.com> + PR 22187 * dwarf2.c (find_abstract_instance_name): Add orig_info_ptr and pname param. Return status. Make name const. Don't abort, diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index ec4c311..1566cd8 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -2476,8 +2476,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) return table; fail: - if (table->sequences != NULL) - free (table->sequences); + while (table->sequences != NULL) + { + struct line_sequence* seq = table->sequences; + table->sequences = table->sequences->prev_sequence; + free (seq); + } if (table->files != NULL) free (table->files); if (table->dirs != NULL) |