X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fserial.c;h=7f1f1eeaa2651360194231cfc5793fd4ad40141f;hb=25879a34e925ce58e62a59382b9a287a75350564;hp=106090b72927e230a6dd389f04a640fe312f94ab;hpb=dbb3e2ad3ddb927a0765f1250eabac8f2c715fa5;p=libsigrok.git diff --git a/src/serial.c b/src/serial.c index 106090b7..7f1f1eea 100644 --- a/src/serial.c +++ b/src/serial.c @@ -122,10 +122,24 @@ SR_PRIV int serial_open(struct sr_serial_dev_inst *serial, int flags) if (ret != SR_OK) return ret; - if (serial->serialcomm) - return serial_set_paramstr(serial, serial->serialcomm); - else - return SR_OK; + if (serial->serialcomm) { + ret = serial_set_paramstr(serial, serial->serialcomm); + if (ret != SR_OK) + return ret; + } + + /* + * Flush potentially dangling RX data. Availability of the + * flush primitive depends on the transport/cable, absense + * is non-fatal. + */ + ret = serial_flush(serial); + if (ret == SR_ERR_NA) + ret = SR_OK; + if (ret != SR_OK) + return ret; + + return SR_OK; } /**