From ad0f427712ed463b7c36c2472664eedd91c94344 Mon Sep 17 00:00:00 2001 From: Vinicius Costa Gomes Date: Fri, 22 Aug 2008 16:41:22 -0300 Subject: Fixing some invalid reads when removing multiple adapters. --- network/server.c | 7 ++++--- serial/proxy.c | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/network/server.c b/network/server.c index 606cfc7c..18ee24f6 100644 --- a/network/server.c +++ b/network/server.c @@ -847,15 +847,16 @@ static void path_unregister(void *data) struct network_server *ns = data; struct network_adapter *na = ns->na; - na->servers = g_slist_remove(na->servers, ns); - server_free(ns); - info("Unregistered interface %s on path %s", ns->iface, na->path); + na->servers = g_slist_remove(na->servers, ns); + server_free(ns); + if (na->servers) return; + adapters = g_slist_remove(adapters, na); adapter_free(na); } diff --git a/serial/proxy.c b/serial/proxy.c index 88c517a0..d779d848 100644 --- a/serial/proxy.c +++ b/serial/proxy.c @@ -1009,6 +1009,8 @@ static void manager_path_unregister(void *data) if (adapter->conn) dbus_connection_unref(adapter->conn); + + adapters = g_slist_remove(adapters, adapter); g_slist_free(adapter->proxies); g_free(adapter->path); g_free(adapter); -- cgit