aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port-serial.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2017-01-26 14:36:02 +0100
committerAleksander Morgado <aleksander@aleksander.es>2017-01-26 17:33:41 +0100
commit3de34e94ccd066aa7540dc4f32a17776a110b579 (patch)
tree7c384c3f2bae226419825f73315199059bf7326d /src/mm-port-serial.c
parentc8ec731043d6dc8429597062254dc669cae4ff5c (diff)
serial: fix handling errors in virtual serial ports
The g_socket_receive() method returns a signed size variable, so don't use an unsigned variable to hold the result.
Diffstat (limited to 'src/mm-port-serial.c')
-rw-r--r--src/mm-port-serial.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
index 2b31dfeb..583dfb98 100644
--- a/src/mm-port-serial.c
+++ b/src/mm-port-serial.c
@@ -974,12 +974,14 @@ common_input_available (MMPortSerial *self,
g_clear_error (&error);
}
} else if (self->priv->socket) {
- bytes_read = g_socket_receive (self->priv->socket,
- buf,
- SERIAL_BUF_SIZE,
- NULL, /* cancellable */
- &error);
- if (bytes_read == -1) {
+ gssize sbytes_read;
+
+ sbytes_read = g_socket_receive (self->priv->socket,
+ buf,
+ SERIAL_BUF_SIZE,
+ NULL, /* cancellable */
+ &error);
+ if (sbytes_read < 0) {
bytes_read = 0;
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
status = G_IO_STATUS_AGAIN;
@@ -989,8 +991,10 @@ common_input_available (MMPortSerial *self,
mm_port_get_device (MM_PORT (self)),
error->message);
g_clear_error (&error);
- } else
+ } else {
+ bytes_read = (gsize) sbytes_read;
status = G_IO_STATUS_NORMAL;
+ }
}
/* If no bytes read, just wait for more data */