[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/font.c,v
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/src/font.c,v |
Date: |
Fri, 22 Feb 2008 19:04:04 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Stefan Monnier <monnier> 08/02/22 19:04:04
Index: font.c
===================================================================
RCS file: /sources/emacs/emacs/src/font.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- font.c 18 Feb 2008 18:38:49 -0000 1.7
+++ font.c 22 Feb 2008 19:04:03 -0000 1.8
@@ -870,6 +870,39 @@
return 0;
}
+
+#ifdef ENABLE_CHECKING
+/* Match a 14-field XLFD pattern against a full XLFD font name. */
+static int
+font_match_xlfd (char *pattern, char *name)
+{
+ while (*pattern && *name)
+ {
+ if (*pattern == *name)
+ pattern++;
+ else if (*pattern == '*')
+ if (*name == pattern[1])
+ pattern += 2;
+ else
+ ;
+ else
+ return 0;
+ name++;
+ }
+ return 1;
+}
+
+/* Make sure the font object matches the XLFD font name. */
+static int
+font_check_xlfd_parse (Lisp_Object font, char *name)
+{
+ char name_check[256];
+ font_unparse_xlfd (font, 0, name_check, 255);
+ return font_match_xlfd (name_check, name);
+}
+
+#endif
+
/* Parse NAME (null terminated) as XLFD and store information in FONT
(font-spec or font-entity). Size property of FONT is set as
follows:
@@ -984,6 +1017,7 @@
i = XLFD_RESX_INDEX;
ASET (font, FONT_EXTRA_INDEX,
intern_font_field (f[i], f[XLFD_REGISTRY_INDEX] - 1 - f[i]));
+ eassert (font_check_xlfd_parse (font, name));
return 0;
}
@@ -2911,7 +2945,7 @@
struct font_driver_list *prev, *list;
if (f && ! driver->draw)
- error ("Unsable font driver for a frame: %s",
+ error ("Unusable font driver for a frame: %s",
SDATA (SYMBOL_NAME (driver->type)));
for (prev = NULL, list = root; list; prev = list, list = list->next)
@@ -3432,14 +3466,16 @@
error ("Invalid font style property: %s", SDATA (SYMBOL_NAME (prop)));
table = Fcopy_sequence (table);
numeric = -1;
- for (tail = table; ! NILP (tail); tail = Fcdr (tail))
+ for (tail = table; CONSP (tail); tail = XCDR (tail))
{
- prop = Fcar (Fcar (tail));
- val = Fcdr (Fcar (tail));
+ prop = Fcar (XCAR (tail));
+ val = Fcdr (XCAR (tail));
CHECK_SYMBOL (prop);
CHECK_NATNUM (val);
if (numeric > XINT (val))
error ("Numeric values not sorted for %s", SDATA (SYMBOL_NAME (prop)));
+ else if (numeric == XINT (val))
+ error ("Duplicate numeric values for %s", SDATA (SYMBOL_NAME (prop)));
numeric = XINT (val);
XSETCAR (tail, Fcons (prop, val));
}
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/05
- [Emacs-diffs] Changes to emacs/src/font.c,v, Glenn Morris, 2008/02/05
- [Emacs-diffs] Changes to emacs/src/font.c,v, Eli Zaretskii, 2008/02/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/02/16
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/18
- [Emacs-diffs] Changes to emacs/src/font.c,v,
Stefan Monnier <=
- [Emacs-diffs] Changes to emacs/src/font.c,v, Kenichi Handa, 2008/02/24
- [Emacs-diffs] Changes to emacs/src/font.c,v, Juanma Barranquero, 2008/02/26
- [Emacs-diffs] Changes to emacs/src/font.c,v, Stefan Monnier, 2008/02/26