From ab0ff42d4396fbdeacf5a6adbfaa839e6025d93f Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 20 Jan 2013 19:10:23 -0800 Subject: [PATCH] shared: Fix issue with management destroy handling --- src/shared/mgmt.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/shared/mgmt.c b/src/shared/mgmt.c index d45c1c4af..2e6bb834b 100644 --- a/src/shared/mgmt.c +++ b/src/shared/mgmt.c @@ -222,6 +222,9 @@ static void request_complete(struct mgmt *mgmt, uint8_t status, destroy_request(request, NULL); + if (mgmt->destroyed) + return; + wakeup_writer(mgmt); } @@ -259,9 +262,6 @@ static void process_notify(struct mgmt *mgmt, uint16_t event, uint16_t index, g_list_free(mgmt->notify_destroyed); mgmt->notify_destroyed = NULL; - - if (mgmt->destroyed) - g_free(mgmt); } static void read_watch_destroy(gpointer user_data) @@ -333,6 +333,11 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond, break; } + if (mgmt->destroyed) { + g_free(mgmt); + return FALSE; + } + return TRUE; } -- 2.47.3