diff options
-rw-r--r-- | src/serialport/qserialport_unix.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp index ab6aad9..aabcf4c 100644 --- a/src/serialport/qserialport_unix.cpp +++ b/src/serialport/qserialport_unix.cpp @@ -537,12 +537,12 @@ QSerialPortPrivate::setStandardBaudRate(qint32 baudRate, QSerialPort::Directions { struct serial_struct currentSerialInfo; - if (::ioctl(descriptor, TIOCGSERIAL, ¤tSerialInfo) != -1) { - + if ((::ioctl(descriptor, TIOCGSERIAL, ¤tSerialInfo) != -1) + && (currentSerialInfo.flags & ASYNC_SPD_CUST)) { currentSerialInfo.flags &= ~ASYNC_SPD_CUST; currentSerialInfo.custom_divisor = 0; - - ::ioctl(descriptor, TIOCSSERIAL, ¤tSerialInfo); + if (::ioctl(descriptor, TIOCSSERIAL, ¤tSerialInfo) == -1) + return decodeSystemError(); } return setBaudRate_helper(baudRate, directions); |