emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs/src xfont.c [EMACS_23_1_RC]


From: Kenichi Handa
Subject: [Emacs-diffs] emacs/src xfont.c [EMACS_23_1_RC]
Date: Tue, 28 Jul 2009 02:02:41 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Branch:         EMACS_23_1_RC
Changes by:     Kenichi Handa <handa>   09/07/28 02:02:41

Modified files:
        src            : xfont.c 

Log message:
        (xfont_list_pattern): Don't ignore the return value of
        font_parse_xlfd.  Check font properties more rigidly.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xfont.c?cvsroot=emacs&only_with_tag=EMACS_23_1_RC&r1=1.30&r2=1.30.2.1

Patches:
Index: xfont.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfont.c,v
retrieving revision 1.30
retrieving revision 1.30.2.1
diff -u -b -r1.30 -r1.30.2.1
--- xfont.c     21 May 2009 16:36:30 -0000      1.30
+++ xfont.c     28 Jul 2009 02:02:40 -0000      1.30.2.1
@@ -411,16 +411,25 @@
            continue;
          entity = font_make_entity ();
          xfont_decode_coding_xlfd (indices[i], -1, buf);
-         font_parse_xlfd (buf, entity);
+         if (font_parse_xlfd (buf, entity) < 0)
+           continue;
          ASET (entity, FONT_TYPE_INDEX, Qx);
          /* Avoid auto-scaled fonts.  */
-         if (XINT (AREF (entity, FONT_DPI_INDEX)) != 0
+         if (INTEGERP (AREF (entity, FONT_DPI_INDEX))
+             && INTEGERP (AREF (entity, FONT_AVGWIDTH_INDEX))
+             && XINT (AREF (entity, FONT_DPI_INDEX)) != 0
              && XINT (AREF (entity, FONT_AVGWIDTH_INDEX)) == 0)
            continue;
          /* Avoid not-allowed scalable fonts.  */
          if (NILP (Vscalable_fonts_allowed))
            {
-             if (XINT (AREF (entity, FONT_SIZE_INDEX)) == 0)
+             int size = 0;
+
+             if (INTEGERP (AREF (entity, FONT_SIZE_INDEX)))
+               size = XINT (AREF (entity, FONT_SIZE_INDEX));
+             else if (FLOATP (AREF (entity, FONT_SIZE_INDEX)))
+               size = XFLOAT_DATA (AREF (entity, FONT_SIZE_INDEX));
+             if (size == 0)
                continue;
            }
          else if (CONSP (Vscalable_fonts_allowed))
@@ -439,6 +448,10 @@
                continue;
            }
 
+         /* Avoid fonts of invalid registry.  */
+         if (NILP (AREF (entity, FONT_REGISTRY_INDEX)))
+           continue;
+
          /* Update encoding and repertory if necessary.  */
          if (! EQ (registry, AREF (entity, FONT_REGISTRY_INDEX)))
            {




reply via email to

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