bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#11082: 24.0.94; u.glyphless member in struct glyph does not fit in 3


From: YAMAMOTO Mitsuharu
Subject: bug#11082: 24.0.94; u.glyphless member in struct glyph does not fit in 32 bits
Date: Sat, 24 Mar 2012 14:23:28 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shij┼Ź) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

In dispextern.h:

   316  struct glyph
   317  {
(snip)
   418    /* A union of sub-structures for different glyph types.  */
   419    union
   420    {
(snip)
   447      /* Sub-stretch for type == GLYPHLESS_GLYPH.  */
   448      struct
   449      {
   450        /* Value is an enum of the type glyphless_display_method.  */
   451        unsigned method : 2;
   452        /* 1 iff this glyph is for a character of no font. */
   453        unsigned for_no_font : 1;
   454        /* Length of acronym or hexadecimal code string (at most 8).  */
   455        unsigned len : 4;
   456        /* Character to display.  Actually we need only 22 bits.  */
   457        unsigned ch : 26;
   458      } glyphless;
   459  
   460      /* Used to compare all bit-fields above in one step.  */
   461      unsigned val;
   462    } u;
   463  };

The member `u.glyphless' above requires at least 33 bits and does not
fit in the size (32 bits) of `u.val' on many environments.  As a
result, equality with respect to the `u.val' member (e.g., used in
GLYPH_EQUAL_P) does not necessarily mean the equality of glyphless
glyphs.

According to the comment above, it seems to be OK to shorten the
length of `u.glyphless.ch' member from 26 to 25.  Could someone
confirm this?

                                     YAMAMOTO Mitsuharu
                                address@hidden





reply via email to

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