diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2017-01-26 14:36:02 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2017-01-26 17:33:41 +0100 |
commit | 3de34e94ccd066aa7540dc4f32a17776a110b579 (patch) | |
tree | 7c384c3f2bae226419825f73315199059bf7326d /src | |
parent | c8ec731043d6dc8429597062254dc669cae4ff5c (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')
-rw-r--r-- | src/mm-port-serial.c | 18 |
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 */ |