summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2014-07-02 23:23:17 +0000
committerDenis Shienkov <denis.shienkov@gmail.com>2014-07-09 11:25:11 +0200
commit86457b216171e4195ff1053b856bb9237d37e3f2 (patch)
tree4bafb920a70e02437d708194c6cf369871fd89a9
parent48607a2d0774ffe8ce87d5d611d025eb985d1f6f (diff)
downloadqtserialport-86457b216171e4195ff1053b856bb9237d37e3f2.tar.gz
Do not continue waitForReadyRead() if an error occurred
This patch improves workaround implemented in the previous commit d34fce4a5d12789ded107631e22cb6ef54d35eee Change-Id: I013b19b47ee343ab00f242d7ee1021b92c07d18f Reviewed-by: Peter Kümmel <syntheticpp@gmx.net> Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
-rw-r--r--src/serialport/qserialport_unix.cpp13
1 files 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;
}