Subject: Re: bug#18597: 25.0.50; Assertion violation in reseat_1

From: Eli Zaretskii <[email-masked]>
Date: Wed, 01 Oct 2014 20:03:29 +0300

> Date: Wed, 01 Oct 2014 18:54:16 +0200
> From: martin rudalics <[email-masked]>
> CC: [email-masked]
> 
> (gdb) frame 8
> #8  0x0102231f in pos_visible_p (w=0x5af05e8, charpos=2658812, x=0x82e2cc, y=0x82e2c8, rtop=0x82e2c4, rbot=0x82e2c0, rowh=0x82e2bc, vpos=0x82e2b8) at xdisp.c:1437
> 1437	  start_display (&it, w, top);
> (gdb) p w->start
> $11 = {
>    i = 24813235
> }

Then I must be missing something, since this code in pos_visible_p:

  SET_TEXT_POS_FROM_MARKER (top, w->start);
  /* Scrolling a minibuffer window via scroll bar when the echo area
     shows long text sometimes resets the minibuffer contents behind
     our backs.  */
  if (CHARPOS (top) > ZV)
    SET_TEXT_POS (top, BEGV, BEGV_BYTE);

  /* Compute exact mode line heights.  */
  if (WINDOW_WANTS_MODELINE_P (w))
    w->mode_line_height
      = display_mode_line (w, CURRENT_MODE_LINE_FACE_ID (w),
			   BVAR (current_buffer, mode_line_format));

  if (WINDOW_WANTS_HEADER_LINE_P (w))
    w->header_line_height
      = display_mode_line (w, HEADER_LINE_FACE_ID,
			   BVAR (current_buffer, header_line_format));

  start_display (&it, w, top);

uses w->start for the position in 'top', with which it calls
start_display.  And if somehow, the condition

  if (CHARPOS (top) > ZV)
    SET_TEXT_POS (top, BEGV, BEGV_BYTE);

fired, then still 'top' should be at BEGV.  What am I missing here?