Subject: Re: bug#13007: 24.3.50; emacs_backtrace.txt

From: Lars Ingebrigtsen <[email-masked]>
Date: Tue, 29 Dec 2015 12:08:49 +0100

Eli Zaretskii <[email-masked]> writes:

>> Function set_window_buffer (W, B, ...) is called where W is selected_window
>> and XBUFFER (B) != current_buffer. This function temporary sets current
>> buffer to XBUFFER (B) to run hooks, and then restore old current_buffer [1].
>> So, on exit we have XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer,
>> and these gets _finally_ synchronized only when read_key_sequence is called with
>> fix_current_buffer == true [2]. If redisplay is invoked between [1] and [2],
>> its routines may see the condition which was eassert'ed; _finally_ means
>> that some redisplay routines may do the synchronization temporary and
>> then restore original value of current buffer (see pos_visible_p for example).
>
> OK.  So what do you suggest, in practical terms?  Are you saying that
> we should use BUF_MODIFF(XBUFFER (w->buffer)) instead of MODIFF and
> BUF_OVERLAY_MODIFF(XBUFFER (w->buffer)) instead of OVERLAY_MODIFF
> inside window_outdated?  Or do you suggest something else?
>
> I'm okay with using BUF_* macros in window_outdated.

It's unclear what the conclusion here was.  Is there anything more to be
done in this bug report?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no