emacs-devel
[Top][All Lists]
Advanced

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

Re: Emacs 23.1.93 pretest


From: Eli Zaretskii
Subject: Re: Emacs 23.1.93 pretest
Date: Sat, 27 Feb 2010 16:14:08 +0200

> Date: Sat, 27 Feb 2010 15:15:35 +0200
> From: Eli Zaretskii <address@hidden>
> Cc: address@hidden, address@hidden
> 
> Thanks.  I get a similar crash, but it isn't an assert violation.
> 
>   Program received signal SIGSEGV, Segmentation fault.
>   0x0118191d in uniscribe_check_otf (font=0x3, otf_spec=44922882)
>       at w32uniscribe.c:684
>   684         features[1] = XCAR (rest);
> 
> otf_spec is nil in my case:
> 
>   (gdb) p otf_spec
>   $1 = 44922882
>   (gdb) xtype
>   Lisp_Symbol
>   (gdb) xsymbol
>   $2 = (struct Lisp_Symbol *) 0x2ad7800
>   "nil"

This sounds like a separate problem, though: it did not exist in
revision 99563 (from yesterday's noon [UTC+2]), but exists in the
current revision 99569 and in the pretest.  By contrast, the problem
with emacs-mule decoding exists in both revisions.

> But then how come this defense in uniscribe_check_otf did not catch
> it?
> 
>   /* Check the spec is in the right format.  */
>   if (!CONSP (otf_spec) || Flength (otf_spec) < 3)
>     return 0;

Answering my own question here: because otf_spec is a cons cell of the
right length, but it looks not according to what uniscribe_check_otf
expects:

    (gdb) p otf_spec
    $7 = 19320654
    (gdb) xcons
    $8 = (struct Lisp_Cons *) 0x126cf48
    {
      car = 0x2ec7fda,
      u = {
        cdr = 0x2ad7802,
        chain = 0x2ad7802
      }
    }
    (gdb) p otf_spec
    $9 = 19320654
    (gdb) xcdr
    $10 = 0x2ad7802
    (gdb) xcdr
    $11 = 0x0

The change which causes it is this:

  === modified file 'lisp/international/fontset.el'
  --- lisp/international/fontset.el       2010-01-13 08:35:10 +0000
  +++ lisp/international/fontset.el       2010-02-27 13:55:36 +0000
  @@ -415,6 +415,9 @@
        (sinhala ,(font-spec :registry "iso10646-1" :otf '(sinh nil (akhn))))
        (malayalam ,(font-spec :registry "iso10646-1" :otf '(mlym nil (akhn))))

  +     (myanmar ,(font-spec :registry "iso10646-1" :otf '(mymr))
  +             ,(font-spec :registry "iso10646-1" :script 'myanmar))
  +
        (lao ,(font-spec :registry "iso10646-1" :otf '(lao\  nil nil (mark)))
            ,(font-spec :registry "iso10646-1" :script 'lao)
            (nil . "MuleLao-1"))
  @@ -548,7 +551,6 @@
                      armenian
                      syriac
                      thaana
  -                   myanmar
                      georgian
                      cherokee
                      canadian-aboriginal

Perhaps Handa-san could take a look at this.  The entry you added
seems to violate the doc string of `font-spec', which says:

    `:otf'

    VALUE must be a list (SCRIPT-TAG LANGSYS-TAG GSUB [ GPOS ]) to specify
    required OpenType features.

      SCRIPT-TAG: OpenType script tag symbol (e.g. `deva').
      LANGSYS-TAG: OpenType language system tag symbol,
         or nil for the default language system.
      GSUB: List of OpenType GSUB feature tag symbols, or nil if none required.
      GPOS: List of OpenType GPOS feature tag symbols, or nil if none required.

Btw, the `:otf' spec does not seem to be documented in the ELisp manual.




reply via email to

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