From 7ed282f3147d80e2f59fe37ae2b7b4b51be52a56 Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 5 Jul 2018 16:46:11 +0100 Subject: [PATCH] Fix for obscure order-of-deletion problems involving self-referenctial ReferenceCountedObjectPtrs --- modules/juce_core/memory/juce_ReferenceCountedObject.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/juce_core/memory/juce_ReferenceCountedObject.h b/modules/juce_core/memory/juce_ReferenceCountedObject.h index 1e3436c0a2..952acd9185 100644 --- a/modules/juce_core/memory/juce_ReferenceCountedObject.h +++ b/modules/juce_core/memory/juce_ReferenceCountedObject.h @@ -378,8 +378,9 @@ public: /** Resets this object to a null pointer. */ void reset() noexcept { - decIfNotNull (referencedObject); - referencedObject = nullptr; + auto oldObject = referencedObject; // need to null the pointer before deleting the object + referencedObject = nullptr; // in case this ptr is itself deleted as a side-effect + decIfNotNull (oldObject); // of the destructor } // the -> operator is called on the referenced object