From e3c4bbd21fb0ea2a79d8572add78e4b8c07c64a8 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Thu, 22 Oct 2020 15:46:58 +0900 Subject: [PATCH] fix: release NSAlert properly (#26078) --- shell/browser/ui/message_box_mac.mm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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]; }]; } }