aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-04-12 16:32:11 +0200
committerDan Williams <dcbw@redhat.com>2011-04-14 13:34:02 -0500
commit48c7dac00902ceab300bfaff82731bb2dadd77cc (patch)
tree1a5175a9345d3498d6a8d821e68ddc37f80e60ab
parentd05c87e4c80f1a56a613241d14de4faeb0a8304a (diff)
serial: ensure response array is empty before setting cached reply
-rw-r--r--src/mm-serial-port.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mm-serial-port.c b/src/mm-serial-port.c
index b2cdfa22..8b683dd3 100644
--- a/src/mm-serial-port.c
+++ b/src/mm-serial-port.c
@@ -571,6 +571,17 @@ mm_serial_port_queue_process (gpointer data)
const GByteArray *cached = mm_serial_port_get_cached_reply (self, info->command);
if (cached) {
+ /* Ensure the response array is fully empty before setting the
+ * cached response. */
+ if (priv->response->len > 0) {
+ g_warning ("%s: (%s) response array is not empty when using "
+ "cached reply, cleaning up %u bytes",
+ __func__,
+ mm_port_get_device (MM_PORT (self)),
+ priv->response->len);
+ g_byte_array_set_size (priv->response, 0);
+ }
+
g_byte_array_append (priv->response, cached->data, cached->len);
mm_serial_port_got_response (self, NULL);
return FALSE;