Subject: bug#73838: 31.0.50; Problems in note_mouse_highlight if -nw

From: Eli Zaretskii <[email-masked]>
Date: Wed, 16 Oct 2024 18:27:39 +0300

> From: Gerd Möllmann <[email-masked]>
> Date: Wed, 16 Oct 2024 12:47:13 +0200
> 
> This is with master fdac10b216f7b47e2eea129d2a96807a0c2055f3 on
> macOS, built with ASAN.
> 
>   $ /Users/gerd/emacs/savannah/master/configure --cache-file /var/folders/1d/k_6t25f94sl83szqbf8gpkrh0000gn/T//config.cache.master --without-tree-sitter --with-native-compilation=no CC=clang 'LDFLAGS=-fsanitize=address -fno-omit-frame-pointer' 'CFLAGS=-Wgnu-imaginary-constant -Wunused-result -g -fno-omit-frame-pointer -g -O0 -fsanitize=address -fno-omit-frame-pointer'
> 
> Recipe:
> 
> - emacs -nw -q
> - M-x xterm-mouse-mode RET
> - M-x make TAB
> - Move the move over the completion candidates
> 
> => ASAN abort in note_mouse_highlight, xdisp.c:36108
> 
> The line number may vary. Looking at that in the debugger, I see
> 
> 	default:
> 	  /* This should not happen.  */
> 	  if (cursor != FRAME_OUTPUT_DATA (f)->nontext_cursor)
> 	    cursor = FRAME_OUTPUT_DATA (f)->nontext_cursor;
> 
> nsterm.h defines FRAME_OUTPUT_DATA(f) as
> 
>   #define FRAME_OUTPUT_DATA(f) ((f)->output_data.ns)
> 
> and since we are not in a GUI frame, this is no good. Analogous defines
> are in xterm.h etc., so the problem is not limited to macOS.

How come you got to that code on a TTY frame, when the condition for
it is

   if (FRAME_INTERNAL_BORDER_WIDTH (f) > 0
      && !NILP (get_frame_param (f, Qdrag_internal_border)))

FRAME_INTERNAL_BORDER_WIDTH is supposed to be zero on TTY frames.  Why
isn't it?