Subject: bug#16043: 24.3.50; emacs crash while scrolling through *Characters List* buffer with C-v

From: Eli Zaretskii <[email-masked]>
Date: Wed, 04 Dec 2013 19:09:08 +0200

> From: Yagnesh Raghava Yakkala <[email-masked]>
> Date: Wed, 04 Dec 2013 11:03:51 +0900
> 
> This may be a related to fonts installed on my system.

It isn't, see below.

> If I scroll through **Charecter List** buffer (M-x
> list-charset-chars RET unicode-bmp RET) emacs (built yesterday from
> trunk) is getting crashed. I am able easily reproduce with emacs -Q.
> 
> backtrace is attached.

Thanks.  For the record, this bug is much more easily and quickly
reproduced with this recipe:

  emacs -Q
  C-x 8 RET 2066 RET

This happens because we simple-mindedly imported the Unicode database
from Unicode v6.3, without analyzing its impact.  The new database
introduced several new bidirectional classes, which neither
dispextern.h nor bidi.c know about, and a few characters which have
these new class properties.  Emacs hits an assertion violation in
bidi.c trying to display any of these characters.

It turns out unidata-gen.el silently intern's new values that are not
in unidata-prop-alist, and thus the bidi-class char-table was no
longer in sync with dispextern.h and bidi.c, as it must be.

So, in addition to fixing the assertion violation (trunk revision
115376), I also added code to unidata-gen.el to emit warnings if it
ever encounters new bidi-class values.  There's a comment in
unidata-gen.el that explains what to do when such a warning appears.