diff options
| author | Kenichi Handa | 2012-11-13 21:06:44 +0900 |
|---|---|---|
| committer | Kenichi Handa | 2012-11-13 21:06:44 +0900 |
| commit | e1bf05c1fbf63087801c242208212df133921ed1 (patch) | |
| tree | e72ff8cf1ded9efebc2e870f3b74fc7f70658f71 /src | |
| parent | 8e6a67b7fa719b0527bb66377d6b72c3c4e84142 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | src/font.c | 17 |
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 @@ | |||
| 1 | 2012-11-13 Kenichi Handa <handa@gnu.org> | ||
| 2 | |||
| 3 | * font.c (font_unparse_xlfd): Exclude special characters from the | ||
| 4 | generating XLFD name. | ||
| 5 | |||
| 1 | 2012-11-06 Dmitry Antipov <dmantipov@yandex.ru> | 6 | 2012-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 | |||
| 1185 | font_unparse_xlfd (Lisp_Object font, int pixel_size, char *name, int nbytes) | 1185 | font_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 | ||