X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=serialport.c;h=d271478250f8588e0bfe03651b25f492a3d8523e;hb=df3b70a88849a50aad823a7c0a96ae83eb474a32;hp=fb603b3edc97c0a5e317b80df7ca870633113792;hpb=888fb45d66aada134f36fa9129499ec180161c0a;p=libserialport.git diff --git a/serialport.c b/serialport.c index fb603b3..d271478 100644 --- a/serialport.c +++ b/serialport.c @@ -764,8 +764,14 @@ 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"); - if (GetOverlappedResult(port->hdl, &port->write_ovl, &bytes_written, TRUE) == 0) - RETURN_FAIL("GetOverlappedResult() failed"); + if (GetOverlappedResult(port->hdl, &port->write_ovl, &bytes_written, TRUE) == 0) { + if (GetLastError() == ERROR_SEM_TIMEOUT) { + DEBUG("Write timed out"); + RETURN_INT(0); + } else { + RETURN_FAIL("GetOverlappedResult() failed"); + } + } DEBUG_FMT("Write completed, %d/%d bytes written", bytes_written, count); RETURN_INT(bytes_written); } else {