summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-03-22 21:00:31 +0100
committerAleksander Morgado <aleksander@aleksander.es>2016-03-22 22:26:16 +0100
commit8fee9a99f065b845bd0a9915c8777e6ac60a67b2 (patch)
tree028aa51632c11fd5d9a1ece0e478b3676e06b74f
parenta0e8505156a31fc6fa119e4f4aefa3f1670588a6 (diff)
downloadModemManager-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.c7
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