]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix nsmenu crash when exiting popup dialog
authorPo Lu <luangruo@yahoo.com>
Thu, 6 Oct 2022 02:52:34 +0000 (10:52 +0800)
committerPo Lu <luangruo@yahoo.com>
Thu, 6 Oct 2022 02:52:34 +0000 (10:52 +0800)
* src/nsmenu.m (pop_down_menu): Do not discard menu items here.
(ns_popup_dialog): Call discard_menu_items after
unuse_menu_items.  (bug#58296)

src/nsmenu.m

index ae795a0d22b7ad36428b4a0e559f7ce08c539e61..b06f737bacfc0f9765451de2a420f45606a81484 100644 (file)
@@ -1551,7 +1551,6 @@ pop_down_menu (void *arg)
 #ifdef NS_IMPL_COCOA
       [[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow];
 #endif
-      discard_menu_items ();
     }
 }
 
@@ -1599,6 +1598,7 @@ ns_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
 
   if (error_name)
     {
+      unbind_to (specpdl_count, Qnil);
       discard_menu_items ();
       [dialog close];
       error ("%s", error_name);
@@ -1608,6 +1608,9 @@ ns_popup_dialog (struct frame *f, Lisp_Object header, Lisp_Object contents)
   popup_activated_flag = 1;
   tem = [dialog runDialogAt: p];
   unbind_to (specpdl_count, Qnil);
+
+  /* This must come *after* unuse_menu_items.  */
+  discard_menu_items ();
   return tem;
 }