diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp index a43e620a8153d5a77f9e148b2b1e87cd02f9ae79..5a2cf8ebe41dd89de3f09d7e51ff3ce09483ff88 100644 --- a/src/serialport/qserialport_win.cpp +++ b/src/serialport/qserialport_win.cpp @@ -518,7 +518,7 @@ bool QSerialPortPrivate::setDataErrorPolicy(QSerialPort::DataErrorPolicy policy) bool QSerialPortPrivate::_q_completeAsyncCommunication() { - if (handleOverlappedResult(0, communicationOverlapped) == qint64(-1)) + if (overlappedResult(communicationOverlapped) == qint64(-1)) return false; if (EV_ERR & triggeredEventMask) handleLineStatusErrors(); @@ -528,7 +528,7 @@ bool QSerialPortPrivate::_q_completeAsyncCommunication() bool QSerialPortPrivate::_q_completeAsyncRead() { - const qint64 bytesTransferred = handleOverlappedResult(QSerialPort::Input, readCompletionOverlapped); + const qint64 bytesTransferred = overlappedResult(readCompletionOverlapped); if (bytesTransferred == qint64(-1)) { readStarted = false; return false; @@ -553,7 +553,7 @@ bool QSerialPortPrivate::_q_completeAsyncWrite() Q_Q(QSerialPort); if (writeStarted) { - const qint64 bytesTransferred = handleOverlappedResult(QSerialPort::Output, writeCompletionOverlapped); + const qint64 bytesTransferred = overlappedResult(writeCompletionOverlapped); if (bytesTransferred == qint64(-1)) { writeStarted = false; return false; @@ -809,7 +809,7 @@ bool QSerialPortPrivate::updateCommTimeouts() return true; } -qint64 QSerialPortPrivate::handleOverlappedResult(int direction, OVERLAPPED &overlapped) +qint64 QSerialPortPrivate::overlappedResult(OVERLAPPED &overlapped) { Q_Q(QSerialPort); @@ -819,9 +819,9 @@ qint64 QSerialPortPrivate::handleOverlappedResult(int direction, OVERLAPPED &ove if (error == QSerialPort::NoError) return qint64(0); if (error != QSerialPort::ResourceError) { - if (direction == QSerialPort::Input) + if (&overlapped == &readCompletionOverlapped) q->setError(QSerialPort::ReadError); - else if (direction == QSerialPort::Output) + else if (&overlapped == &writeCompletionOverlapped) q->setError(QSerialPort::WriteError); else q->setError(error); diff --git a/src/serialport/qserialport_win_p.h b/src/serialport/qserialport_win_p.h index 6b009fe6ed1f6fadcce4665f5f04a29a98e8b456..78529e8f4079aaa362fc8dced3ff3fe8cac84620 100644 --- a/src/serialport/qserialport_win_p.h +++ b/src/serialport/qserialport_win_p.h @@ -141,7 +141,7 @@ private: bool initialize(QIODevice::OpenMode mode); bool updateDcb(); bool updateCommTimeouts(); - qint64 handleOverlappedResult(int direction, OVERLAPPED &overlapped); + qint64 overlappedResult(OVERLAPPED &overlapped); bool waitAnyEvent(int msecs, bool *timedOut, HANDLE *triggeredEvent);