diff options
| author | Kenichi Handa | 2007-04-25 13:11:57 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2007-04-25 13:11:57 +0000 |
| commit | ae54cb3cdfd005196102ca6555a1661ec3eca805 (patch) | |
| tree | ea664e898256875a3be5d512cc892c524d009c13 /src | |
| parent | 8fb618c061856aad8eeb3c754ebc59e628e2c6d1 (diff) | |
| download | emacs-ae54cb3cdfd005196102ca6555a1661ec3eca805.tar.gz emacs-ae54cb3cdfd005196102ca6555a1661ec3eca805.zip | |
(reorder_font_vector): Check contents of font_def.
(fontset_find_font): Fix previous change.
Diffstat (limited to 'src')
| -rw-r--r-- | src/fontset.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/fontset.c b/src/fontset.c index c6aac929b2a..675683b819b 100644 --- a/src/fontset.c +++ b/src/fontset.c | |||
| @@ -465,7 +465,8 @@ reorder_font_vector (fontset_element) | |||
| 465 | for (i = 0; i < size; i++) | 465 | for (i = 0; i < size; i++) |
| 466 | { | 466 | { |
| 467 | font_def = AREF (fontset_element, i + 3); | 467 | font_def = AREF (fontset_element, i + 3); |
| 468 | if (! NILP (AREF (font_def, 2))) | 468 | if (VECTORP (AREF (font_def, 2)) |
| 469 | && INTEGERP (AREF (AREF (font_def, 2), 1))) | ||
| 469 | charset_id_table[i] = XINT (AREF (AREF (font_def, 2), 1)); | 470 | charset_id_table[i] = XINT (AREF (AREF (font_def, 2), 1)); |
| 470 | else | 471 | else |
| 471 | charset_id_table[i] = -1; | 472 | charset_id_table[i] = -1; |
| @@ -547,7 +548,7 @@ fontset_find_font (fontset, c, face, id, fallback) | |||
| 547 | struct face *face; | 548 | struct face *face; |
| 548 | int id, fallback; | 549 | int id, fallback; |
| 549 | { | 550 | { |
| 550 | Lisp_Object base_fontset, elt, vec; | 551 | Lisp_Object base_fontset, elt, vec, font_def; |
| 551 | int i, from, to; | 552 | int i, from, to; |
| 552 | int font_idx; | 553 | int font_idx; |
| 553 | FRAME_PTR f = XFRAME (FONTSET_FRAME (fontset)); | 554 | FRAME_PTR f = XFRAME (FONTSET_FRAME (fontset)); |
| @@ -604,7 +605,7 @@ fontset_find_font (fontset, c, face, id, fallback) | |||
| 604 | && enable_font_backend | 605 | && enable_font_backend |
| 605 | && EQ (base_fontset, Vdefault_fontset)) | 606 | && EQ (base_fontset, Vdefault_fontset)) |
| 606 | { | 607 | { |
| 607 | Lisp_Object script, font_spec, tmp; | 608 | Lisp_Object script, font_spec; |
| 608 | 609 | ||
| 609 | script = CHAR_TABLE_REF (Vchar_script_table, c); | 610 | script = CHAR_TABLE_REF (Vchar_script_table, c); |
| 610 | if (NILP (script)) | 611 | if (NILP (script)) |
| @@ -613,9 +614,11 @@ fontset_find_font (fontset, c, face, id, fallback) | |||
| 613 | ASET (font_spec, FONT_REGISTRY_INDEX, Qiso10646_1); | 614 | ASET (font_spec, FONT_REGISTRY_INDEX, Qiso10646_1); |
| 614 | ASET (font_spec, FONT_EXTRA_INDEX, | 615 | ASET (font_spec, FONT_EXTRA_INDEX, |
| 615 | Fcons (Fcons (QCscript, script), Qnil)); | 616 | Fcons (Fcons (QCscript, script), Qnil)); |
| 616 | tmp = Fmake_vector (make_number (5), Qnil); | 617 | font_def = Fmake_vector (make_number (3), Qnil); |
| 617 | ASET (tmp, 3, font_spec); | 618 | ASET (font_def, 0, font_spec); |
| 618 | ASET (vec, 3 + i, tmp); | 619 | elt = Fmake_vector (make_number (5), Qnil); |
| 620 | ASET (elt, 2, font_def); | ||
| 621 | ASET (vec, 3 + i, elt); | ||
| 619 | } | 622 | } |
| 620 | #endif /* USE_FONT_BACKEND */ | 623 | #endif /* USE_FONT_BACKEND */ |
| 621 | 624 | ||
| @@ -659,8 +662,6 @@ fontset_find_font (fontset, c, face, id, fallback) | |||
| 659 | /* Find the first available font in the vector of RFONT-DEF. */ | 662 | /* Find the first available font in the vector of RFONT-DEF. */ |
| 660 | for (; i < ASIZE (vec); i++) | 663 | for (; i < ASIZE (vec); i++) |
| 661 | { | 664 | { |
| 662 | Lisp_Object font_def; | ||
| 663 | |||
| 664 | elt = AREF (vec, i); | 665 | elt = AREF (vec, i); |
| 665 | if (NILP (elt)) | 666 | if (NILP (elt)) |
| 666 | continue; | 667 | continue; |