diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/solib.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gdb/solib.c b/gdb/solib.c index c9f1e14..f1537f3 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -1091,6 +1091,7 @@ current_sos () { struct so_list *new = (struct so_list *) xmalloc (sizeof (struct so_list)); + struct cleanup *old_chain = make_cleanup (free, new); memset (new, 0, sizeof (*new)); new->lmaddr = lm; @@ -1104,9 +1105,7 @@ current_sos () does have a name, so we can no longer use a missing name to decide when to ignore it. */ if (IGNORE_FIRST_LINK_MAP_ENTRY (new)) - { - free_so (new); - } + free_so (new); else { int errcode; @@ -1140,6 +1139,8 @@ current_sos () link_ptr = &new->next; } } + + discard_cleanups (old_chain); } return head; |