diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2011-01-06 15:16:03 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@accenture.com> | 2011-01-06 15:26:50 (GMT) |
commit | 66cfe2a776b7542fe1d8bae9c0d7bb5be79406fd (patch) | |
tree | 01c66deca46f8e8098973552d71a7661eda1dba9 /src/plugins/bearer/symbian | |
parent | 97e045f48a331ff97b87bd207fb811277a4fa695 (diff) | |
download | Qt-66cfe2a776b7542fe1d8bae9c0d7bb5be79406fd.zip Qt-66cfe2a776b7542fe1d8bae9c0d7bb5be79406fd.tar.gz Qt-66cfe2a776b7542fe1d8bae9c0d7bb5be79406fd.tar.bz2 |
Fix KERN-EXEC 0 panic on exit when bearer is searching for WLANs
The access point scanner cancels itself in the destructor.
This requires the handle to be valid, but it was closed in the symbian
engine destructor immediately before deleting the AP scanner.
Because of the way symbian active objects work, the crashing function
is only called if there was an asynchronous request in progress.
So it could be missed in cases where the scan completes faster than the
test case.
Task-number: QTBUG-16484
Reviewed-by: Markus Goetz
Diffstat (limited to 'src/plugins/bearer/symbian')
-rw-r--r-- | src/plugins/bearer/symbian/symbianengine.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp index f025d86..a370d78 100644 --- a/src/plugins/bearer/symbian/symbianengine.cpp +++ b/src/plugins/bearer/symbian/symbianengine.cpp @@ -144,6 +144,10 @@ SymbianEngine::~SymbianEngine() { Cancel(); + //The scanner may be using the connection monitor so it needs to be + //deleted first while the handle is still valid. + delete ipAccessPointsAvailabilityScanner; + iConnectionMonitor.CancelNotifications(); iConnectionMonitor.Close(); @@ -151,8 +155,6 @@ SymbianEngine::~SymbianEngine() iCmManager.Close(); #endif - delete ipAccessPointsAvailabilityScanner; - // CCommsDatabase destructor uses cleanup stack. Since QNetworkConfigurationManager // is a global static, but the time we are here, E32Main() has been exited already and // the thread's default cleanup stack has been deleted. Without this line, a |