diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-01-24 14:59:08 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-28 07:12:40 +0100 |
commit | 29de876f55dc96748fdca8dd3fef0c873791796f (patch) | |
tree | 3b67056d71ad5071ef7ed3a0dc3d18fccafc0d78 /src/bluetooth | |
parent | 7644b7184ab5c304594bb3298c41405374203592 (diff) |
Fix crash in Bluez implementation for QBluetoothSocket
The internal socket was closed but not reset to -1 after calling close()
or abort(). As a consequence the subsequent connect() call crashed since
internal socket notifier were invalid
[ChangeLog][QtBluetooth][QBluetoothSocket] Fixed a crash in Bluez part
of QBluetoothSocket() which was caused when triggered when calling
the sequence connect() - abort() - connect().
Change-Id: I21b779c7808d0a5211df9e2481da28e2e9753ca9
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Diffstat (limited to 'src/bluetooth')
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index 13ae2b93..ed2e8ab8 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -196,7 +196,6 @@ void QBluetoothSocketPrivate::_q_writeNotify() } char buf[1024]; - Q_Q(QBluetoothSocket); int size = txBuffer.read(buf, 1024); @@ -258,6 +257,7 @@ void QBluetoothSocketPrivate::abort() // we don't call disconnectFromService or // QBluetoothSocket::close QT_CLOSE(socket); + socket = -1; Q_Q(QBluetoothSocket); emit q->disconnected(); @@ -510,7 +510,8 @@ void QBluetoothSocketPrivate::close() // We are disconnected now, so go to unconnected. q->setSocketState(QBluetoothSocket::UnconnectedState); emit q->disconnected(); - ::close(socket); + QT_CLOSE(socket); + socket = -1; } } |