From ffee9b19de53b2658d1fd4a8d4699a1cd51fbd02 Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 2 Nov 2021 10:13:20 +0000 Subject: [PATCH] MenuBarComponent: Avoid dereferencing dangling pointer when dismissing menus --- modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp b/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp index f955855d23..91352d9d66 100644 --- a/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp +++ b/modules/juce_gui_basics/menus/juce_MenuBarComponent.cpp @@ -241,10 +241,16 @@ void MenuBarComponent::showMenu (int index) auto itemBounds = itemComponent->getBounds(); + const auto callback = [ref = SafePointer (this), index] (int result) + { + if (ref != nullptr) + ref->menuDismissed (index, result); + }; + m.showMenuAsync (PopupMenu::Options().withTargetComponent (this) .withTargetScreenArea (localAreaToGlobal (itemBounds)) .withMinimumWidth (itemBounds.getWidth()), - [this, index] (int result) { menuDismissed (index, result); }); + callback); } } }