diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/font.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/font.c b/src/font.c index 653db011039..4f75615d8ed 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -2352,7 +2352,7 @@ font_list_entities (frame, spec) | |||
| 2352 | size = 0; | 2352 | size = 0; |
| 2353 | 2353 | ||
| 2354 | ftype = AREF (spec, FONT_TYPE_INDEX); | 2354 | ftype = AREF (spec, FONT_TYPE_INDEX); |
| 2355 | for (i = 0; i <= FONT_REGISTRY_INDEX; i++) | 2355 | for (i = 1; i <= FONT_REGISTRY_INDEX; i++) |
| 2356 | ASET (scratch_font_spec, i, AREF (spec, i)); | 2356 | ASET (scratch_font_spec, i, AREF (spec, i)); |
| 2357 | for (; i < FONT_EXTRA_INDEX; i++) | 2357 | for (; i < FONT_EXTRA_INDEX; i++) |
| 2358 | { | 2358 | { |
| @@ -2377,7 +2377,7 @@ font_list_entities (frame, spec) | |||
| 2377 | { | 2377 | { |
| 2378 | Lisp_Object val = assoc_no_quit (scratch_font_spec, XCDR (cache)); | 2378 | Lisp_Object val = assoc_no_quit (scratch_font_spec, XCDR (cache)); |
| 2379 | 2379 | ||
| 2380 | if (CONSP (val) && VECTORP (XCDR (val))) | 2380 | if (CONSP (val)) |
| 2381 | val = XCDR (val); | 2381 | val = XCDR (val); |
| 2382 | else | 2382 | else |
| 2383 | { | 2383 | { |
| @@ -2430,16 +2430,18 @@ font_matching_entity (f, attrs, spec) | |||
| 2430 | && (NILP (ftype) || EQ (driver_list->driver->type, ftype))) | 2430 | && (NILP (ftype) || EQ (driver_list->driver->type, ftype))) |
| 2431 | { | 2431 | { |
| 2432 | Lisp_Object cache = font_get_cache (f, driver_list->driver); | 2432 | Lisp_Object cache = font_get_cache (f, driver_list->driver); |
| 2433 | Lisp_Object copy; | ||
| 2433 | 2434 | ||
| 2434 | ASET (spec, FONT_TYPE_INDEX, driver_list->driver->type); | 2435 | ASET (spec, FONT_TYPE_INDEX, driver_list->driver->type); |
| 2435 | entity = assoc_no_quit (spec, XCDR (cache)); | 2436 | entity = assoc_no_quit (spec, XCDR (cache)); |
| 2436 | if (CONSP (entity) && ! VECTORP (XCDR (entity))) | 2437 | if (CONSP (entity)) |
| 2437 | entity = XCDR (entity); | 2438 | entity = XCDR (entity); |
| 2438 | else | 2439 | else |
| 2439 | { | 2440 | { |
| 2440 | entity = driver_list->driver->match (frame, spec); | 2441 | entity = driver_list->driver->match (frame, spec); |
| 2441 | XSETCDR (cache, Fcons (Fcons (Fcopy_font_spec (spec), entity), | 2442 | copy = Fcopy_font_spec (spec); |
| 2442 | XCDR (cache))); | 2443 | ASET (copy, FONT_TYPE_INDEX, driver_list->driver->type); |
| 2444 | XSETCDR (cache, Fcons (Fcons (copy, entity), XCDR (cache))); | ||
| 2443 | } | 2445 | } |
| 2444 | if (! NILP (entity)) | 2446 | if (! NILP (entity)) |
| 2445 | break; | 2447 | break; |