emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] emacs/src xfont.c


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

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

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&r1=1.31&r2=1.32

Patches:
Index: xfont.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfont.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- xfont.c     23 Jun 2009 05:48:24 -0000      1.31
+++ xfont.c     28 Jul 2009 02:07:05 -0000      1.32
@@ -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]