emacs-devel
[Top][All Lists]
Advanced

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

Tracking down assertion failure


From: Stefan Monnier
Subject: Tracking down assertion failure
Date: Wed, 12 Mar 2008 15:18:29 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

I regularly get assertion failures in the redisplay that have to do with
an apparent discrepency between charpos and bytepos.

More specifically, the assertion failure is at xdisp.c:6062:

          xassert (IT_BYTEPOS (*it) == CHAR_TO_BYTE (IT_CHARPOS (*it)));

I've propagated this assertion a bit everywhere and I se it even
triggers around line 11500:

          /* Skip from tlbufpos to PT and see where it is.  Note that
             PT may be in invisible text.  If so, we will end at the
             next visible position.  */
          init_iterator (&it, w, CHARPOS (tlbufpos), BYTEPOS (tlbufpos),
                         NULL, DEFAULT_FACE_ID);
          xassert (IT_BYTEPOS (it) == CHAR_TO_BYTE (IT_CHARPOS (it)));

the problem is that as I keep adding such assertions earlier and earlier
in the code I seem to start hitting another problem: I'm not sure at
which point this condition should be true and and at which point it's OK
for it not to be true (because the charpos and bytepos recorded refer
to out-of-data data which will/should simply not be used).

Can someone help me out?  


        Stefan




reply via email to

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