From c305c01dfdc8482a6c5abf4fdf5b290f55d57529 Mon Sep 17 00:00:00 2001
From: MidoriKami <9083275+MidoriKami@users.noreply.github.com>
Date: Tue, 19 Sep 2023 23:43:45 -0700
Subject: [PATCH 1/2] Nullify Scoped Service Delegates
---
Dalamud/Game/ClientState/Conditions/Condition.cs | 2 ++
Dalamud/Game/DutyState/DutyState.cs | 5 +++++
Dalamud/Game/Gui/ChatGui.cs | 5 +++++
Dalamud/Game/Gui/FlyText/FlyTextGui.cs | 2 ++
Dalamud/Game/Gui/GameGui.cs | 4 ++++
Dalamud/Game/Gui/PartyFinder/PartyFinderGui.cs | 2 ++
Dalamud/Game/Gui/Toast/ToastGui.cs | 4 ++++
Dalamud/Game/Network/GameNetwork.cs | 2 ++
Dalamud/Utility/Util.cs | 2 +-
9 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/Dalamud/Game/ClientState/Conditions/Condition.cs b/Dalamud/Game/ClientState/Conditions/Condition.cs
index 0f8523e9b..2db47ea4d 100644
--- a/Dalamud/Game/ClientState/Conditions/Condition.cs
+++ b/Dalamud/Game/ClientState/Conditions/Condition.cs
@@ -189,6 +189,8 @@ internal class ConditionPluginScoped : IDisposable, IServiceType, ICondition
public void Dispose()
{
this.conditionService.ConditionChange -= this.ConditionChangedForward;
+
+ this.ConditionChange = null;
}
///
diff --git a/Dalamud/Game/DutyState/DutyState.cs b/Dalamud/Game/DutyState/DutyState.cs
index 34940dee0..c52ceff0f 100644
--- a/Dalamud/Game/DutyState/DutyState.cs
+++ b/Dalamud/Game/DutyState/DutyState.cs
@@ -210,6 +210,11 @@ internal class DutyStatePluginScoped : IDisposable, IServiceType, IDutyState
this.dutyStateService.DutyWiped -= this.DutyWipedForward;
this.dutyStateService.DutyRecommenced -= this.DutyRecommencedForward;
this.dutyStateService.DutyCompleted -= this.DutyCompletedForward;
+
+ this.DutyStarted = null;
+ this.DutyWiped = null;
+ this.DutyRecommenced = null;
+ this.DutyCompleted = null;
}
private void DutyStartedForward(object sender, ushort territoryId) => this.DutyStarted?.Invoke(sender, territoryId);
diff --git a/Dalamud/Game/Gui/ChatGui.cs b/Dalamud/Game/Gui/ChatGui.cs
index 2fbeb404e..55c919ab5 100644
--- a/Dalamud/Game/Gui/ChatGui.cs
+++ b/Dalamud/Game/Gui/ChatGui.cs
@@ -460,6 +460,11 @@ internal class ChatGuiPluginScoped : IDisposable, IServiceType, IChatGui
this.chatGuiService.CheckMessageHandled -= this.OnCheckMessageForward;
this.chatGuiService.ChatMessageHandled -= this.OnMessageHandledForward;
this.chatGuiService.ChatMessageUnhandled -= this.OnMessageUnhandledForward;
+
+ this.ChatMessage = null;
+ this.CheckMessageHandled = null;
+ this.ChatMessageHandled = null;
+ this.ChatMessageUnhandled = null;
}
///
diff --git a/Dalamud/Game/Gui/FlyText/FlyTextGui.cs b/Dalamud/Game/Gui/FlyText/FlyTextGui.cs
index 3c04c744a..64de4b2dd 100644
--- a/Dalamud/Game/Gui/FlyText/FlyTextGui.cs
+++ b/Dalamud/Game/Gui/FlyText/FlyTextGui.cs
@@ -307,6 +307,8 @@ internal class FlyTextGuiPluginScoped : IDisposable, IServiceType, IFlyTextGui
public void Dispose()
{
this.flyTextGuiService.FlyTextCreated -= this.FlyTextCreatedForward;
+
+ this.FlyTextCreated = null;
}
///
diff --git a/Dalamud/Game/Gui/GameGui.cs b/Dalamud/Game/Gui/GameGui.cs
index 078c624e8..349d2a424 100644
--- a/Dalamud/Game/Gui/GameGui.cs
+++ b/Dalamud/Game/Gui/GameGui.cs
@@ -566,6 +566,10 @@ internal class GameGuiPluginScoped : IDisposable, IServiceType, IGameGui
this.gameGuiService.UiHideToggled -= this.UiHideToggledForward;
this.gameGuiService.HoveredItemChanged -= this.HoveredItemForward;
this.gameGuiService.HoveredActionChanged -= this.HoveredActionForward;
+
+ this.UiHideToggled = null;
+ this.HoveredItemChanged = null;
+ this.HoveredActionChanged = null;
}
///
diff --git a/Dalamud/Game/Gui/PartyFinder/PartyFinderGui.cs b/Dalamud/Game/Gui/PartyFinder/PartyFinderGui.cs
index 41a8ba56a..4bd93cdf0 100644
--- a/Dalamud/Game/Gui/PartyFinder/PartyFinderGui.cs
+++ b/Dalamud/Game/Gui/PartyFinder/PartyFinderGui.cs
@@ -156,6 +156,8 @@ internal class PartyFinderGuiPluginScoped : IDisposable, IServiceType, IPartyFin
public void Dispose()
{
this.partyFinderGuiService.ReceiveListing -= this.ReceiveListingForward;
+
+ this.ReceiveListing = null;
}
private void ReceiveListingForward(PartyFinderListing listing, PartyFinderListingEventArgs args) => this.ReceiveListing?.Invoke(listing, args);
diff --git a/Dalamud/Game/Gui/Toast/ToastGui.cs b/Dalamud/Game/Gui/Toast/ToastGui.cs
index 93126710b..9624e3e72 100644
--- a/Dalamud/Game/Gui/Toast/ToastGui.cs
+++ b/Dalamud/Game/Gui/Toast/ToastGui.cs
@@ -417,6 +417,10 @@ internal class ToastGuiPluginScoped : IDisposable, IServiceType, IToastGui
this.toastGuiService.Toast -= this.ToastForward;
this.toastGuiService.QuestToast -= this.QuestToastForward;
this.toastGuiService.ErrorToast -= this.ErrorToastForward;
+
+ this.Toast = null;
+ this.QuestToast = null;
+ this.ErrorToast = null;
}
///
diff --git a/Dalamud/Game/Network/GameNetwork.cs b/Dalamud/Game/Network/GameNetwork.cs
index f56fd3996..7c900ece4 100644
--- a/Dalamud/Game/Network/GameNetwork.cs
+++ b/Dalamud/Game/Network/GameNetwork.cs
@@ -169,6 +169,8 @@ internal class GameNetworkPluginScoped : IDisposable, IServiceType, IGameNetwork
public void Dispose()
{
this.gameNetworkService.NetworkMessage -= this.NetworkMessageForward;
+
+ this.NetworkMessage = null;
}
private void NetworkMessageForward(nint dataPtr, ushort opCode, uint sourceActorId, uint targetActorId, NetworkMessageDirection direction)
diff --git a/Dalamud/Utility/Util.cs b/Dalamud/Utility/Util.cs
index 78edda3dd..c386ee23e 100644
--- a/Dalamud/Utility/Util.cs
+++ b/Dalamud/Utility/Util.cs
@@ -651,7 +651,7 @@ public static class Util
///
/// The path of the file to write to.
/// The text to write.
- internal static void WriteAllTextSafe(string path, string text)
+ public static void WriteAllTextSafe(string path, string text)
{
var tmpPath = path + ".tmp";
if (File.Exists(tmpPath))
From 2b2a027fb08aca6e7400b2cf5afbb886a8f9ac76 Mon Sep 17 00:00:00 2001
From: MidoriKami <9083275+MidoriKami@users.noreply.github.com>
Date: Tue, 19 Sep 2023 23:44:56 -0700
Subject: [PATCH 2/2] Move WriteAllTextSafe to correct location
---
Dalamud/Utility/Util.cs | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/Dalamud/Utility/Util.cs b/Dalamud/Utility/Util.cs
index c386ee23e..8ca87b691 100644
--- a/Dalamud/Utility/Util.cs
+++ b/Dalamud/Utility/Util.cs
@@ -609,7 +609,23 @@ public static class Util
}
}
}
+
+ ///
+ /// Overwrite text in a file by first writing it to a temporary file, and then
+ /// moving that file to the path specified.
+ ///
+ /// The path of the file to write to.
+ /// The text to write.
+ public static void WriteAllTextSafe(string path, string text)
+ {
+ var tmpPath = path + ".tmp";
+ if (File.Exists(tmpPath))
+ File.Delete(tmpPath);
+ File.WriteAllText(tmpPath, text);
+ File.Move(tmpPath, path, true);
+ }
+
///
/// Dispose this object.
///
@@ -645,22 +661,6 @@ public static class Util
}
}
- ///
- /// Overwrite text in a file by first writing it to a temporary file, and then
- /// moving that file to the path specified.
- ///
- /// The path of the file to write to.
- /// The text to write.
- public static void WriteAllTextSafe(string path, string text)
- {
- var tmpPath = path + ".tmp";
- if (File.Exists(tmpPath))
- File.Delete(tmpPath);
-
- File.WriteAllText(tmpPath, text);
- File.Move(tmpPath, path, true);
- }
-
///
/// Gets a random, inoffensive, human-friendly string.
///