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.
This commit is contained in:
@@ -974,12 +974,14 @@ common_input_available (MMPortSerial *self,
|
|||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
}
|
}
|
||||||
} else if (self->priv->socket) {
|
} else if (self->priv->socket) {
|
||||||
bytes_read = g_socket_receive (self->priv->socket,
|
gssize sbytes_read;
|
||||||
buf,
|
|
||||||
SERIAL_BUF_SIZE,
|
sbytes_read = g_socket_receive (self->priv->socket,
|
||||||
NULL, /* cancellable */
|
buf,
|
||||||
&error);
|
SERIAL_BUF_SIZE,
|
||||||
if (bytes_read == -1) {
|
NULL, /* cancellable */
|
||||||
|
&error);
|
||||||
|
if (sbytes_read < 0) {
|
||||||
bytes_read = 0;
|
bytes_read = 0;
|
||||||
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
|
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
|
||||||
status = G_IO_STATUS_AGAIN;
|
status = G_IO_STATUS_AGAIN;
|
||||||
@@ -989,8 +991,10 @@ common_input_available (MMPortSerial *self,
|
|||||||
mm_port_get_device (MM_PORT (self)),
|
mm_port_get_device (MM_PORT (self)),
|
||||||
error->message);
|
error->message);
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
} else
|
} else {
|
||||||
|
bytes_read = (gsize) sbytes_read;
|
||||||
status = G_IO_STATUS_NORMAL;
|
status = G_IO_STATUS_NORMAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If no bytes read, just wait for more data */
|
/* If no bytes read, just wait for more data */
|
||||||
|
Reference in New Issue
Block a user