aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBen Chan <benchan@chromium.org>2014-03-18 00:06:58 -0700
committerAleksander Morgado <aleksander@aleksander.es>2014-03-18 15:11:36 +0100
commit4827933f0c4a85febb39bfed05329389f5bc64dd (patch)
tree9504e4c781ec2a65aed756d4f0823013656cd872 /src
parent31a19c2299b10c51475a778880be2d0ef863f6b6 (diff)
port-serial: fix command context completion when clearing command queue
This patch removes an extra invocation of g_simple_async_result_complete on the result associated with each command context in the command queue when mm_port_serial_close clears the queue. It also changes the code to complete the results in idle, which avoids a nested invocation of mm_port_serial_close. That could happen if the completion of the result calls mm_port_serial_close again (e.g. via at_command_context_free, at_sequence_context_free in mm-base-modem-at.c). The nested invocation of mm_port_serial_close could create undesirable effects (e.g. the assertion on open_count > 0 fails in case of a forced close).
Diffstat (limited to 'src')
-rw-r--r--src/mm-port-serial.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
index e41beefa..859acb78 100644
--- a/src/mm-port-serial.c
+++ b/src/mm-port-serial.c
@@ -1378,8 +1378,7 @@ mm_port_serial_close (MMPortSerial *self)
MM_SERIAL_ERROR,
MM_SERIAL_ERROR_SEND_FAILED,
"Serial port is now closed");
- g_simple_async_result_complete (ctx->result);
- command_context_complete_and_free (ctx, FALSE);
+ command_context_complete_and_free (ctx, TRUE);
}
g_queue_clear (self->priv->queue);