Diff between 65214a997ed4453fc99fb39b59aaddc8f758e0b2 and ab0ff42d4396fbdeacf5a6adbfaa839e6025d93f
Changed Files
| File | Additions | Deletions | Status |
| src/shared/mgmt.c | +8 | -3 | modified |
Full Patch
diff --git a/src/shared/mgmt.c b/src/shared/mgmt.c
index d45c1c4..2e6bb83 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;
}