Fix crash when invalidating qqmltypeloader
authorDaiwei Li <daiweili@suitabletech.com>
Fri, 23 Jan 2015 22:33:35 +0000 (14:33 -0800)
committerDaiwei Li <daiweili@suitabletech.com>
Fri, 6 Feb 2015 16:01:42 +0000 (16:01 +0000)
Change-Id: I16db2ea9a6c25d26e2b803b9bb8d9ef7156e254d
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
src/qml/qml/qqmltypeloader.cpp

index 1b222fe..0ac1d7f 100644 (file)
@@ -903,15 +903,18 @@ QQmlDataLoader::~QQmlDataLoader()
 
 void QQmlDataLoader::invalidate()
 {
-    for (NetworkReplies::Iterator iter = m_networkReplies.begin(); iter != m_networkReplies.end(); ++iter)
-        (*iter)->release();
-    m_networkReplies.clear();
-
     if (m_thread) {
         shutdownThread();
         delete m_thread;
         m_thread = 0;
     }
+
+    // Need to delete the network replies after
+    // the loader thread is shutdown as it could be
+    // getting new replies while we clear them
+    for (NetworkReplies::Iterator iter = m_networkReplies.begin(); iter != m_networkReplies.end(); ++iter)
+        (*iter)->release();
+    m_networkReplies.clear();
 }
 
 void QQmlDataLoader::lock()