dbus-cleanup-sockets: free list of socket entries
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 17 Jan 2011 12:18:40 +0000 (12:18 +0000)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 17 Jan 2011 12:18:40 +0000 (12:18 +0000)
Origin: vendor, Maemo
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=33128
Bug-NB: NB#180486
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
tools/dbus-cleanup-sockets.c

index 487c4b0..1b6709a 100644 (file)
@@ -138,16 +138,31 @@ socket_entry_new (const char *dir,
   return se;
 }
 
-#if 0
 static void
 free_socket_entry (SocketEntry *se)
 {
-  free (se->name);
-  if (se->fd >= 0)
-    close (se->fd);
-  free (se);
+  if (se)
+    {
+      free (se->name);
+      if (se->fd >= 0)
+        close (se->fd);
+      free (se);
+    }
+}
+
+static void
+free_socket_entries (SocketEntry** entries,
+                     int           n_entries)
+{
+  int i;
+
+  if (entries)
+    {
+      for (i = 0; i < n_entries; ++i)
+        free_socket_entry (entries[i]);
+      free (entries);
+    }
 }
-#endif
 
 static void
 read_sockets (const char    *dir,
@@ -350,6 +365,8 @@ clean_dir (const char *dir)
     }
 
   unhandled_count += (n_entries - alive_count - cleaned_count);
+
+  free_socket_entries (entries, n_entries);
 }
 
 #endif /* AF_UNIX */