From e3df22a4ea931f2f81e209fdb7657dcdf42dc6c6 Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 1 Apr 2025 11:46:51 +0100 Subject: [PATCH] NSViewComponentPeer: Fix use-after-free when closing windows with the keyboard --- .../native/juce_NSViewComponentPeer_mac.mm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm b/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm index e23f36d04c..da5277063c 100644 --- a/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm +++ b/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm @@ -2333,9 +2333,14 @@ struct JuceNSViewClass final : public NSViewComponentPeerWrapperinPerformKeyEquivalent, true }; - const auto ref = owner->safeComponent; + const auto prev = std::exchange (owner->inPerformKeyEquivalent, true); + + const ScopeGuard scope { [&ref, owner, prev] + { + if (ref != nullptr) + owner->inPerformKeyEquivalent = prev; + } }; if (owner->sendEventToInputContextOrComponent (ev)) {