From d6e46c24bb2e3edc70fab8d7b6544d93e26a2863 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sun, 26 Feb 2023 00:27:49 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20invalid=20mem=20addresses?= =?UTF-8?q?=20after=20zone=20change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RetainerTrack/Handlers/MarketBoardUIHandler.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/RetainerTrack/Handlers/MarketBoardUIHandler.cs b/RetainerTrack/Handlers/MarketBoardUIHandler.cs index 90c2920..adca723 100644 --- a/RetainerTrack/Handlers/MarketBoardUIHandler.cs +++ b/RetainerTrack/Handlers/MarketBoardUIHandler.cs @@ -15,7 +15,6 @@ namespace RetainerTrack.Handlers private readonly GameGui _gameGui; private readonly PersistenceContext _persistenceContext; - private AddonItemSearchResult* _itemSearchResultAddon; private Hook? _drawHook; private delegate void Draw(AtkUnitBase* addon); @@ -30,19 +29,20 @@ namespace RetainerTrack.Handlers _framework = framework; _gameGui = gameGui; _persistenceContext = persistenceContext; - ; _framework.Update += FrameworkUpdate; } + private AddonItemSearchResult* ItemSearchResult => (AddonItemSearchResult*)_gameGui.GetAddonByName("ItemSearchResult"); + private void FrameworkUpdate(Framework framework) { - _itemSearchResultAddon = (AddonItemSearchResult*)_gameGui.GetAddonByName("ItemSearchResult"); - if (_itemSearchResultAddon == null) + var addon = ItemSearchResult; + if (addon == null) return; _drawHook ??= Hook.FromAddress( - new nint(_itemSearchResultAddon->AtkUnitBase.AtkEventListener.vfunc[42]), + new nint(addon->AtkUnitBase.AtkEventListener.vfunc[42]), AddonDraw); _drawHook.Enable(); _framework.Update -= FrameworkUpdate; @@ -58,10 +58,11 @@ namespace RetainerTrack.Handlers { try { - if (_itemSearchResultAddon == null || !_itemSearchResultAddon->AtkUnitBase.IsVisible) + var addon = ItemSearchResult; + if (addon == null || !addon->AtkUnitBase.IsVisible) return; - var results = _itemSearchResultAddon->Results; + var results = addon->Results; if (results == null) return;