From fea5b3b563ba9b42b6d03881ac27d6c95ef75800 Mon Sep 17 00:00:00 2001 From: Haselnussbomber Date: Tue, 5 Nov 2024 21:15:09 +0100 Subject: [PATCH] Safely call events in DalamudPluginInterface (#2063) --- Dalamud/Plugin/DalamudPluginInterface.cs | 31 ++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/Dalamud/Plugin/DalamudPluginInterface.cs b/Dalamud/Plugin/DalamudPluginInterface.cs index ecd2e0799..d5cf360af 100644 --- a/Dalamud/Plugin/DalamudPluginInterface.cs +++ b/Dalamud/Plugin/DalamudPluginInterface.cs @@ -526,13 +526,40 @@ internal sealed class DalamudPluginInterface : IDalamudPluginInterface, IDisposa /// If this plugin was affected by the change. internal void NotifyActivePluginsChanged(PluginListInvalidationKind kind, bool affectedThisPlugin) { - this.ActivePluginsChanged?.Invoke(kind, affectedThisPlugin); + if (this.ActivePluginsChanged is { } callback) + { + foreach (var action in callback.GetInvocationList().Cast()) + { + try + { + action(kind, affectedThisPlugin); + } + catch (Exception ex) + { + Log.Error(ex, "Exception during raise of {handler}", action.Method); + } + } + } } private void OnLocalizationChanged(string langCode) { this.UiLanguage = langCode; - this.LanguageChanged?.Invoke(langCode); + + if (this.LanguageChanged is { } callback) + { + foreach (var action in callback.GetInvocationList().Cast()) + { + try + { + action(langCode); + } + catch (Exception ex) + { + Log.Error(ex, "Exception during raise of {handler}", action.Method); + } + } + } } private void OnDalamudConfigurationSaved(DalamudConfiguration dalamudConfiguration)