aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenichi Handa2012-11-13 21:06:44 +0900
committerKenichi Handa2012-11-13 21:06:44 +0900
commite1bf05c1fbf63087801c242208212df133921ed1 (patch)
treee72ff8cf1ded9efebc2e870f3b74fc7f70658f71 /src
parent8e6a67b7fa719b0527bb66377d6b72c3c4e84142 (diff)
downloademacs-e1bf05c1fbf63087801c242208212df133921ed1.tar.gz
emacs-e1bf05c1fbf63087801c242208212df133921ed1.zip
font.c (font_unparse_xlfd): Exclude special characters from the generating XLFD name.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/font.c17
2 files changed, 20 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 1daeb7bc0b6..efe5e59cb73 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12012-11-13 Kenichi Handa <handa@gnu.org>
2
3 * font.c (font_unparse_xlfd): Exclude special characters from the
4 generating XLFD name.
5
12012-11-06 Dmitry Antipov <dmantipov@yandex.ru> 62012-11-06 Dmitry Antipov <dmantipov@yandex.ru>
2 7
3 * window.c (quad): New function. 8 * window.c (quad): New function.
diff --git a/src/font.c b/src/font.c
index e960f9b3d13..1ec5929506e 100644
--- a/src/font.c
+++ b/src/font.c
@@ -1185,7 +1185,7 @@ ptrdiff_t
1185font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes) 1185font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
1186{ 1186{
1187 char *p; 1187 char *p;
1188 const char *f[XLFD_REGISTRY_INDEX + 1]; 1188 char *f[XLFD_REGISTRY_INDEX + 1];
1189 Lisp_Object val; 1189 Lisp_Object val;
1190 int i, j, len; 1190 int i, j, len;
1191 1191
@@ -1234,8 +1234,21 @@ font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes)
1234 f[j] = "*"; 1234 f[j] = "*";
1235 else 1235 else
1236 { 1236 {
1237 int c, k, l;
1238 ptrdiff_t alloc;
1239
1237 val = SYMBOL_NAME (val); 1240 val = SYMBOL_NAME (val);
1238 f[j] = SSDATA (val); 1241 alloc = SBYTES (val) + 1;
1242 if (nbytes <= alloc)
1243 return -1;
1244 f[j] = alloca (alloc);
1245 /* Copy the name while excluding '-', '?', ',', and '"'. */
1246 for (k = l = 0; k < alloc; k++)
1247 {
1248 c = SREF (val, k);
1249 if (c != '-' && c != '?' && c != ',' && c != '"')
1250 f[j][l++] = c;
1251 }
1239 } 1252 }
1240 } 1253 }
1241 1254