aboutsummaryrefslogtreecommitdiff
path: root/gdb/solib.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/solib.c')
-rw-r--r--gdb/solib.c7
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;