diff --git a/shell/browser/ui/message_box_mac.mm b/shell/browser/ui/message_box_mac.mm index 63820e6e3167..fe24fe963ce4 100644 --- a/shell/browser/ui/message_box_mac.mm +++ b/shell/browser/ui/message_box_mac.mm @@ -12,6 +12,7 @@ #include "base/callback.h" #include "base/mac/mac_util.h" +#include "base/mac/scoped_nsobject.h" #include "base/strings/sys_string_conversions.h" #include "shell/browser/native_window.h" #include "skia/ext/skia_utils_mac.h" @@ -94,14 +95,14 @@ NSAlert* CreateNSAlert(const MessageBoxSettings& settings) { } // namespace int ShowMessageBoxSync(const MessageBoxSettings& settings) { - NSAlert* alert = CreateNSAlert(settings); + base::scoped_nsobject alert(CreateNSAlert(settings)); // Use runModal for synchronous alert without parent, since we don't have a // window to wait for. Also use it when window is provided but it is not // shown as it would be impossible to dismiss the alert if it is connected // to invisible window (see #22671). if (!settings.parent_window || !settings.parent_window->IsVisible()) - return [[alert autorelease] runModal]; + return [alert runModal]; __block int ret_code = -1; @@ -140,6 +141,7 @@ void ShowMessageBox(const MessageBoxSettings& settings, completionHandler:^(NSModalResponse response) { std::move(callback_).Run( response, alert.suppressionButton.state == NSOnState); + [alert release]; }]; } }