bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#55970: 29.0.50; Emacs crashes when dragging the scroll bar with "--w


From: समीर सिंह Sameer Singh
Subject: bug#55970: 29.0.50; Emacs crashes when dragging the scroll bar with "--with-pgtk" and "--without-toolkit-scroll-bars" configure flags
Date: Wed, 15 Jun 2022 00:14:45 +0530

It does not crash now!
Thank you.

On Wed, Jun 15, 2022 at 12:00 AM Eli Zaretskii <eliz@gnu.org> wrote:
> From: समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
> Date: Tue, 14 Jun 2022 23:18:42 +0530
> Cc: 55970@debbugs.gnu.org
>
> Thread 1 "emacs" hit Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:420
> 420     {
> (gdb) frame 2
> #2  0x000055555571ba26 in make_lispy_event (event=0x555555e25300 <kbd_buffer+256>) at
> keyboard.c:6140
> 6140              emacs_abort ();
> (gdb) p *event
> $1 = {
>  kind = SCROLL_BAR_CLICK_EVENT,
>  part = scroll_bar_handle,
>  code = 0,
>  modifiers = 0,
>  x = make_fixnum(17531),
>  y = make_fixnum(1244637),
>  timestamp = 0,
>  frame_or_window = XIL(0x5555560794a5),
>  arg = XIL(0),
>  device = XIL(0x30)
> }

Thanks.  I think the problem is here:

  static void
  pgtk_send_scroll_bar_event (Lisp_Object window, enum scroll_bar_part part,
                              int portion, int whole, bool horizontal)
  {
    union buffered_input_event inev;

    EVENT_INIT (inev.ie);

    inev.ie.kind = (horizontal
                    ? HORIZONTAL_SCROLL_BAR_CLICK_EVENT
                    : SCROLL_BAR_CLICK_EVENT);
    inev.ie.frame_or_window = window;
    inev.ie.arg = Qnil;
    inev.ie.timestamp = 0;
    inev.ie.code = 0;
    inev.ie.part = part;
    inev.ie.x = make_fixnum (portion);
    inev.ie.y = make_fixnum (whole);
    inev.ie.modifiers = 0;

    evq_enqueue (&inev);
  }

This sets the modifiers to zero, which causes the abort.  Instead, I
suggest to do this:

    inev.ie.modifiers =
      part == scroll_bar_end_scroll ? up_modifier : down_modifier;

Can you try this?

reply via email to

[Prev in Thread] Current Thread [Next in Thread]