Changed code in the open search engine a bit to cope with potential race condition causing a traceback. 6_0_x

Sat, 07 Mar 2015 12:41:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 07 Mar 2015 12:41:21 +0100
branch
6_0_x
changeset 4159
ba30f95a0ec2
parent 4157
00d12a3a5f2d
child 4167
763149f3a87e

Changed code in the open search engine a bit to cope with potential race condition causing a traceback.
(grafted from bfb56045bc1f512e942848df5f2b98c45f4d7e15)

Helpviewer/OpenSearch/OpenSearchEngine.py file | annotate | diff | comparison | revisions
--- a/Helpviewer/OpenSearch/OpenSearchEngine.py	Wed Mar 04 19:56:11 2015 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchEngine.py	Sat Mar 07 12:41:21 2015 +0100
@@ -15,7 +15,8 @@
 from PyQt5.QtCore import pyqtSignal, pyqtSlot, QLocale, QUrl, QByteArray, \
     QBuffer, QIODevice, QObject, qVersion
 from PyQt5.QtGui import QImage
-from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager
+from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager, \
+    QNetworkReply
 
 from UI.Info import Program
 
@@ -468,27 +469,29 @@
         """
         Private slot to receive the suggestions.
         """
-        buffer = bytes(self.__suggestionsReply.readAll())
-        response = Utilities.decodeBytes(buffer)
-        response = response.strip()
-        
-        self.__suggestionsReply.close()
-        self.__suggestionsReply = None
-        
-        if len(response) == 0:
-            return
-        
-        try:
-            result = json.loads(response)
-        except ValueError:
-            return
-        
-        try:
-            suggestions = result[1]
-        except IndexError:
-            return
-        
-        self.suggestions.emit(suggestions)
+        if self.__suggestionsReply.error() == QNetworkReply.NoError:
+            buffer = bytes(self.__suggestionsReply.readAll())
+            response = Utilities.decodeBytes(buffer)
+            response = response.strip()
+            
+            self.__suggestionsReply.close()
+            self.__suggestionsReply.deleteLater()
+            self.__suggestionsReply = None
+            
+            if len(response) == 0:
+                return
+            
+            try:
+                result = json.loads(response)
+            except ValueError:
+                return
+            
+            try:
+                suggestions = result[1]
+            except IndexError:
+                return
+            
+            self.suggestions.emit(suggestions)
     
     def networkAccessManager(self):
         """

eric ide

mercurial