Richard Stallman wrote: >I figured out how Lisp code was getting called during that loop. >xmenu.c had the same bug, so I fixed it there. > >Now we need a Windows hacker to adapt the same fix to w32menu.c. >Perhaps macmenu.c needs the same change. > >Thanks for figuring this out. > > Hi Richard, I adapted your changes from xmenu.c to the version of w32menu.c where I fixed another bug with popup menu, and generalized use of the macros AREF, ASET, ASIZE, to access vectors. Attached you will find a new diff. The change log is at end. I currently use this new version and can confirm that you fixed the bug :-) Thank you very much for your support! David ------------ Change Log: (local_heap, local_alloc, local_free): New macros. (malloc_widget_value, free_widget_value) (w32_free_submenu_strings): Use them. (push_submenu_start, push_submenu_end, push_left_right_boundary) (push_menu_pane, push_menu_item, single_keymap_panes) (single_menu_item, Fx_popup_menu, menubar_selection_callback) (single_submenu, set_frame_menubar) (w32_menu_show, w32_dialog_show): Use AREF, ASET, ASIZE. (Fx_popup_menu): Don't show pop up menu until preceding one is actually cleaned up. Moved UNGCPRO outside #ifdef HAVE_MENUS block. Changes adapted from xmenu.c (set_frame_menubar): First parse all submenus, then make widget_value trees from them. Don't allocate any widget_value objects until we are done with the parsing. (parse_single_submenu): New function. (digest_single_submenu): New function. (single_submenu): Function deleted, replaced by those two.