From: Martin Ling Date: Thu, 7 May 2015 08:19:47 +0000 (+0100) Subject: windows: Always check return value of GetOverlappedResult(). X-Git-Tag: libserialport-0.1.1~32 X-Git-Url: http://sigrok.org/gitweb/?p=libserialport.git;a=commitdiff_plain;h=27911925c11b01943e2a569ebb71fe259c387329;hp=bbe566fe1c02b97469f57e35d7b6b5cfcf0ee9fa windows: Always check return value of GetOverlappedResult(). --- diff --git a/serialport.c b/serialport.c index 8d71865..39500f8 100644 --- a/serialport.c +++ b/serialport.c @@ -763,7 +763,8 @@ SP_API enum sp_return sp_blocking_write(struct sp_port *port, const void *buf, RETURN_INT(count); } else if (GetLastError() == ERROR_IO_PENDING) { DEBUG("Waiting for write to complete"); - GetOverlappedResult(port->hdl, &port->write_ovl, &bytes_written, TRUE); + if (GetOverlappedResult(port->hdl, &port->write_ovl, &bytes_written, TRUE) == 0) + RETURN_FAIL("GetOverlappedResult() failed"); DEBUG_FMT("Write completed, %d/%d bytes written", bytes_written, count); RETURN_INT(bytes_written); } else { @@ -973,7 +974,8 @@ SP_API enum sp_return sp_blocking_read(struct sp_port *port, void *buf, bytes_read = count; } else if (GetLastError() == ERROR_IO_PENDING) { DEBUG("Waiting for read to complete"); - GetOverlappedResult(port->hdl, &port->read_ovl, &bytes_read, TRUE); + if (GetOverlappedResult(port->hdl, &port->read_ovl, &bytes_read, TRUE) == 0) + RETURN_FAIL("GetOverlappedResult() failed"); DEBUG_FMT("Read completed, %d/%d bytes read", bytes_read, count); } else { RETURN_FAIL("ReadFile() failed");