From cbe5747d040f4824202815da19090012ac69c069 Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sun, 31 Jan 2021 12:53:35 +0100 Subject: [PATCH] Fixes issue where getting battle from a pokemon could result in battle being in a deleted state. --- PkmnLibSharp/Battling/Pokemon.cs | 4 ++-- PkmnLibSharp/Utilities/PointerWrapper.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PkmnLibSharp/Battling/Pokemon.cs b/PkmnLibSharp/Battling/Pokemon.cs index 0c01a57..79b28e1 100644 --- a/PkmnLibSharp/Battling/Pokemon.cs +++ b/PkmnLibSharp/Battling/Pokemon.cs @@ -145,7 +145,7 @@ namespace PkmnLibSharp.Battling get { var ptr = Creaturelib.Generated.Creature.GetBattle(Ptr); - if (_battle != null && _battle.Ptr == ptr) return _battle; + if (_battle != null && !_battle.IsDeleted && _battle.Ptr == ptr) return _battle; if (TryResolvePointer(ptr, out _battle)) return _battle; _battle = Constructor.Active.ConstructBattle(ptr); @@ -157,7 +157,7 @@ namespace PkmnLibSharp.Battling get { var ptr = Creaturelib.Generated.Creature.GetBattleSide(Ptr); - if (_battleSide != null && _battleSide.Ptr == ptr) return _battleSide; + if (_battleSide != null && !_battleSide.IsDeleted && _battleSide.Ptr == ptr) return _battleSide; if (TryResolvePointer(ptr, out _battleSide)) return _battleSide; _battleSide = new BattleSide(ptr); diff --git a/PkmnLibSharp/Utilities/PointerWrapper.cs b/PkmnLibSharp/Utilities/PointerWrapper.cs index b4fd405..51c8207 100644 --- a/PkmnLibSharp/Utilities/PointerWrapper.cs +++ b/PkmnLibSharp/Utilities/PointerWrapper.cs @@ -21,7 +21,7 @@ namespace PkmnLibSharp.Utilities } } - protected bool IsDeleted { get; private set; } = false; + public bool IsDeleted { get; private set; } = false; private static readonly ConcurrentDictionary> Cached = new ConcurrentDictionary>();