From 3fbf4dc9ac70bf19bb2fcde67529ea3dc429ebf1 Mon Sep 17 00:00:00 2001 From: Helmut Eller Date: Fri, 7 Nov 2025 15:39:22 +0100 Subject: [PATCH] Don't call record_unwind_protect_ptr with a GCed pointer * src/xmenu.c (create_and_show_popup_menu): Use record_unwind_protect instead of record_unwind_protect_ptr. (leave_toolkit_menu): Use a Lisp_Object instead of a untagged pointer. --- src/xmenu.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/xmenu.c b/src/xmenu.c index 0da5ea4a473..5922e740156 100644 --- a/src/xmenu.c +++ b/src/xmenu.c @@ -1661,16 +1661,16 @@ prepare_for_entry_into_toolkit_menu (struct frame *f) } static void -leave_toolkit_menu (void *data) +leave_toolkit_menu (Lisp_Object frame) { XIEventMask mask; ptrdiff_t l = XIMaskLen (XI_LASTEVENT); unsigned char *m; - Lisp_Object tail, frame; + Lisp_Object tail; struct x_display_info *dpyinfo; struct frame *f; - dpyinfo = FRAME_DISPLAY_INFO ((struct frame *) data); + dpyinfo = FRAME_DISPLAY_INFO (XFRAME (frame)); if (!dpyinfo->supports_xi2) return; @@ -1876,7 +1876,8 @@ create_and_show_popup_menu (struct frame *f, widget_value *first_wv, record_unwind_protect_int (pop_down_menu, (int) menu_id); #ifdef HAVE_XINPUT2 - record_unwind_protect_ptr (leave_toolkit_menu, f); + record_unwind_protect (leave_toolkit_menu, + make_lisp_ptr (f, Lisp_Vectorlike)); #endif /* Process events that apply to the menu. */