Subject: bug#20734: 25.0.50; "Args out of range" with help-window-select t

From: Nicolas Richard <[email-masked]>
Date: Fri, 05 Jun 2015 21:48:40 +0200

Eli Zaretskii <[email-masked]> writes:
> Yes, that's the bug.  But the real problem is that we've switched
> windows temporarily, and we shouldn't move point in the current buffer
> at all when we do that.

Ok. I think I understand now.  What about adding an assertion to make
sure current_buffer is shown in selected_window at that point?

>     I think we shouldn't call adjust_point_for_property in this case
> at all.  Can you see if adding
>
>   && EQ (XWINDOW (selected_window)->contents, current_buffer)
>
> to the condition that guards the call to adjust_point_for_property
> fixes the problem?

Yes it does, but I wrapped the lhs into XBUFFER :

  && EQ (XBUFFER (XWINDOW (selected_window)->contents), current_buffer)

otherwise it complains:

--8<---------------cut here---------------start------------->8---
In file included from keyboard.c:26:0:
keyboard.c: In function ‘command_loop_1’:
lisp.h:339:34: warning: comparison between pointer and integer [enabled by default]
 #define lisp_h_EQ(x, y) (XLI (x) == XLI (y))
                                  ^
lisp.h:388:19: note: in expansion of macro ‘lisp_h_EQ’
 # define EQ(x, y) lisp_h_EQ (x, y)
                   ^
keyboard.c:1621:7: note: in expansion of macro ‘EQ’
    && EQ (XWINDOW (selected_window)->contents, current_buffer)
       ^
--8<---------------cut here---------------end--------------->8---

-- 
Nico.