From 86457b216171e4195ff1053b856bb9237d37e3f2 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Wed, 2 Jul 2014 23:23:17 +0000 Subject: Do not continue waitForReadyRead() if an error occurred MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch improves workaround implemented in the previous commit d34fce4a5d12789ded107631e22cb6ef54d35eee Change-Id: I013b19b47ee343ab00f242d7ee1021b92c07d18f Reviewed-by: Peter Kümmel Reviewed-by: Sergey Belyashov Reviewed-by: Denis Shienkov --- src/serialport/qserialport_unix.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp index f7d2af9..29822d5 100644 --- a/src/serialport/qserialport_unix.cpp +++ b/src/serialport/qserialport_unix.cpp @@ -424,7 +424,6 @@ bool QSerialPortPrivate::waitForReadyRead(int msecs) stopWatch.start(); - error = QSerialPort::NoError; do { bool readyToRead = false; bool readyToWrite = false; @@ -436,17 +435,11 @@ bool QSerialPortPrivate::waitForReadyRead(int msecs) return false; } - if (readyToRead) { - if (readNotification()) - return true; - } - - if (readyToWrite) - completeAsyncWrite(); + if (readyToRead) + return readNotification(); - if (error != QSerialPort::NoError) + if (readyToWrite && !completeAsyncWrite()) return false; - } while (msecs == -1 || timeoutValue(msecs, stopWatch.elapsed()) > 0); return false; } -- cgit v1.2.1