* solib.c (current_sos): Be more careful about freeing the new
authorJim Blandy <jimb@codesourcery.com>
Thu, 16 Mar 2000 23:12:42 +0000 (23:12 +0000)
committerJim Blandy <jimb@codesourcery.com>
Thu, 16 Mar 2000 23:12:42 +0000 (23:12 +0000)
so_list node if an error occurs.

gdb/solib.c

index c9f1e144cb39f37f195d19ea7f0e37a458176b71..f1537f3a1e67f7cb3c644fe9bcccea169cee2b2a 100644 (file)
@@ -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;