diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-02-03 12:16:35 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-02-04 12:09:42 (GMT) |
commit | 8fe811e14b6db6a9637a5bf6d276613786291762 (patch) | |
tree | 1e23b78e69072d703870e8f27e12e5ff4153f6be /src/plugins/bearer | |
parent | 231dcfc8b6a90c3a0ab4869e0a9ab45403fd9a8c (diff) | |
download | Qt-8fe811e14b6db6a9637a5bf6d276613786291762.zip Qt-8fe811e14b6db6a9637a5bf6d276613786291762.tar.gz Qt-8fe811e14b6db6a9637a5bf6d276613786291762.tar.bz2 |
Fix random crashes when bearer suddenly goes down
1. QNetworkSession being deleted from the closed signal caused data
abort or E32User-CBase 49 panics. (both observed)
2. Potential E32User-CBase 46 panic in
ConnectionProgressNotifier::StartNotifications()
Reviewed-by: Aaron Tunney
Reviewed-By: Markus Goetz
Task-Number: QTBUG-17196
Diffstat (limited to 'src/plugins/bearer')
-rw-r--r-- | src/plugins/bearer/symbian/qnetworksession_impl.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp index 433eef6..741f8c5 100644 --- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp +++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp @@ -1552,8 +1552,8 @@ void ConnectionProgressNotifier::StartNotifications() { if (!IsActive()) { SetActive(); + iConnection.ProgressNotification(iProgress, iStatus); } - iConnection.ProgressNotification(iProgress, iStatus); } void ConnectionProgressNotifier::StopNotifications() @@ -1569,10 +1569,10 @@ void ConnectionProgressNotifier::DoCancel() void ConnectionProgressNotifier::RunL() { if (iStatus == KErrNone) { - QT_TRYCATCH_LEAVING(iOwner.handleSymbianConnectionStatusChange(iProgress().iStage, iProgress().iError)); - SetActive(); iConnection.ProgressNotification(iProgress, iStatus); + // warning, this object may be deleted in the callback - do nothing after handleSymbianConnectionStatusChange + QT_TRYCATCH_LEAVING(iOwner.handleSymbianConnectionStatusChange(iProgress().iStage, iProgress().iError)); } } |