From 4a7b556463f1f85c6c1c50bc4fd74cd659d8ceb8 Mon Sep 17 00:00:00 2001 From: reuk Date: Fri, 28 Jan 2022 14:32:49 +0000 Subject: [PATCH] InAppPurchasesDemo: Fix leaky ListBoxModel implementation --- examples/Utilities/InAppPurchasesDemo.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/examples/Utilities/InAppPurchasesDemo.h b/examples/Utilities/InAppPurchasesDemo.h index 9e1e1db5e9..8979b1832c 100644 --- a/examples/Utilities/InAppPurchasesDemo.h +++ b/examples/Utilities/InAppPurchasesDemo.h @@ -442,15 +442,17 @@ public: Component* refreshComponentForRow (int row, bool selected, Component* existing) override { + auto safePtr = rawToUniquePtr (existing); + if (isPositiveAndBelow (row, voiceProducts.size())) { - if (existing == nullptr) - existing = new VoiceRow (purchases); + if (safePtr == nullptr) + safePtr = std::make_unique (purchases); - if (auto* voiceRow = dynamic_cast (existing)) + if (auto* voiceRow = dynamic_cast (safePtr.get())) voiceRow->update (row, selected); - return existing; + return safePtr.release(); } return nullptr;