summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2014-01-24 14:59:08 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-28 07:12:40 +0100
commit29de876f55dc96748fdca8dd3fef0c873791796f (patch)
tree3b67056d71ad5071ef7ed3a0dc3d18fccafc0d78 /src
parent7644b7184ab5c304594bb3298c41405374203592 (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')
-rw-r--r--src/bluetooth/qbluetoothsocket_bluez.cpp5
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;
}
}