diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2016-03-22 21:00:31 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2016-03-22 22:26:16 +0100 |
commit | 8fee9a99f065b845bd0a9915c8777e6ac60a67b2 (patch) | |
tree | 028aa51632c11fd5d9a1ece0e478b3676e06b74f | |
parent | a0e8505156a31fc6fa119e4f4aefa3f1670588a6 (diff) | |
download | ModemManager-8fee9a99f065b845bd0a9915c8777e6ac60a67b2.tar.gz |
port-probe: unlink the task from probe before completing it
The task completion may try to enqueue a next probe task and in
mm_port_probe_run() it asserts there's no task linked.
https://bugs.freedesktop.org/show_bug.cgi?id=94664
Fixes: 1939c5ace50240127276efacec5c7f166483bb79
-rw-r--r-- | src/mm-port-probe.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/mm-port-probe.c b/src/mm-port-probe.c index c09b8a1a2..a1ca8ba22 100644 --- a/src/mm-port-probe.c +++ b/src/mm-port-probe.c @@ -1023,6 +1023,7 @@ static void serial_probe_schedule (MMPortProbe *self) { PortProbeRunContext *ctx; + GTask *task; g_assert (self->priv->task); ctx = g_task_get_task_data (self->priv->task); @@ -1100,8 +1101,10 @@ serial_probe_schedule (MMPortProbe *self) } /* All done! */ - g_task_return_boolean (self->priv->task, TRUE); - g_clear_object (&self->priv->task); + task = self->priv->task; + self->priv->task = NULL; + g_task_return_boolean (task, TRUE); + g_object_unref (task); } static void |