diff --git a/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp b/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp index fa2959bfd..b3252adaa 100644 --- a/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp +++ b/src/tools/ecode/plugins/aiassistant/aiassistantplugin.cpp @@ -143,6 +143,8 @@ AIAssistantPlugin::~AIAssistantPlugin() { waitUntilLoaded(); mShuttingDown = true; + unsubscribeFileSystemListener(); + if ( mAIChatButton ) { if ( mAIChatButtonPosCbId ) mAIChatButton->getParent()->removeEventListener( mAIChatButtonPosCbId ); diff --git a/src/tools/ecode/plugins/pluginmanager.cpp b/src/tools/ecode/plugins/pluginmanager.cpp index a4890186f..e0dda9fb5 100644 --- a/src/tools/ecode/plugins/pluginmanager.cpp +++ b/src/tools/ecode/plugins/pluginmanager.cpp @@ -313,8 +313,12 @@ void PluginManager::subscribeFileSystemListener() { mFileSystemListenerCb = mFileSystemListener->addListener( [this]( const FileEvent& ev, const FileInfo& file ) { - Lock l( mPluginsFSSubsMutex ); - for ( Plugin* plugin : mPluginsFSSubs ) + UnorderedSet plugins; + { + Lock l( mPluginsFSSubsMutex ); + plugins = mPluginsFSSubs; + } + for ( Plugin* plugin : plugins ) plugin->onFileSystemEvent( ev, file ); } ); }