Просмотр исходного кода

Fix crash when creating a socket before the plug-in is fully registered

The plug-in ID is set once the register function is completed, so after initialisation. If the _createSocket function is called in between, Cura would crash.
I don't know why the _createSocket function would be called in between, but possibly another plug-in causes an event that calls it since it's being called on many events (everything that would initiate a reslice).

Fixes Sentry issue CURA-K4.
Ghostkeeper 4 лет назад
Родитель
Сommit
add9be387b
1 измененных файлов с 4 добавлено и 1 удалено
  1. 4 1
      plugins/CuraEngineBackend/CuraEngineBackend.py

+ 4 - 1
plugins/CuraEngineBackend/CuraEngineBackend.py

@@ -720,9 +720,12 @@ class CuraEngineBackend(QObject, Backend):
     ##  Creates a new socket connection.
     def _createSocket(self, protocol_file: str = None) -> None:
         if not protocol_file:
+            if not self.getPluginId():
+                Logger.error("Can't create socket before CuraEngineBackend plug-in is registered.")
+                return
             plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId())
             if not plugin_path:
-                Logger.log("e", "Could not get plugin path!", self.getPluginId())
+                Logger.error("Could not get plugin path!", self.getPluginId())
                 return
             protocol_file = os.path.abspath(os.path.join(plugin_path, "Cura.proto"))
         super()._createSocket(protocol_file)