Fix the waitForReadyRead() behavior on Windows
authorDenis Shienkov <denis.shienkov@gmail.com>
Wed, 25 Dec 2013 12:32:28 +0000 (16:32 +0400)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 17 Jan 2014 08:37:56 +0000 (09:37 +0100)
commit90dbacd9dae2b82fad9c68ca95c06a6d6b1ae030
tree7a5ff731908abef99d187536896a18f720d3e6bd
parentd5658bd0ced4a1eb0703d3cb1b566025d610fbdd
Fix the waitForReadyRead() behavior on Windows

It is necessary to compare size of the readBuffer before and after
completion of each read operation. If size of readBuffer are equal
it means that are no more data available for reading. In this case
the method should returns true if an initial size of readBuffer is
not equal to the current size of readBuffer. Otherwise in all other
cases should be continue waiting until timeout has been expired.

Also must not to do check for the NoError code and to hope for valid
value of this code inside waitForReadyRead(). Because a last error
code do not clears automatically. It lead to false returns of this
method in case the error number is not equal to NoError (for example
it error remained after failed of any previous method). This check
should be implemented in a different way in case of need. But at
present this check is unnecessary because result of the waitAnyEvent()
cover it.

Task-number: QTBUG-33987
Change-Id: Ic8d8e3806fd4863c2720ffb83d5c19eae54d57f0
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Reviewed-by: Laszlo Papp <lpapp@kde.org>
src/serialport/qserialport_win.cpp