Mercurial > emacs
changeset 98214:5803b1114219
(fill_gstring_header): Don't check FROM and TO here.
(composition_compute_stop_pos): Fix handling of static composition.
(Fcomposition_get_gstring): Check FROM and TO at first.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 18 Sep 2008 06:20:12 +0000 |
parents | 52d26067a946 |
children | 35b7a9ccd303 |
files | src/composite.c |
diffstat | 1 files changed, 9 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/composite.c Wed Sep 17 21:25:29 2008 +0000 +++ b/src/composite.c Thu Sep 18 06:20:12 2008 +0000 @@ -812,9 +812,8 @@ CHECK_STRING (string); if (! STRING_MULTIBYTE (current_buffer->enable_multibyte_characters)) error ("Attempt to shape unibyte text"); - CHECK_NATNUM (start); + /* FROM and TO are checked by the caller. */ from = XINT (start); - CHECK_NATNUM (end); to = XINT (end); if (from < 0 || from > to || to > SCHARS (string)) args_out_of_range_3 (string, start, end); @@ -1027,7 +1026,10 @@ else FETCH_CHAR_ADVANCE (c, charpos, bytepos); if (c == '\n') - break; + { + cmp_it->ch = -2; + break; + } val = CHAR_TABLE_REF (Vcomposition_function_table, c); if (! NILP (val)) { @@ -1050,7 +1052,6 @@ } } cmp_it->stop_pos = charpos; - cmp_it->ch = -2; } /* Check if the character at CHARPOS (and BYTEPOS) is composed @@ -1491,6 +1492,8 @@ Lisp_Object gstring, header; EMACS_INT frompos, topos; + CHECK_NATNUM (from); + CHECK_NATNUM (to); if (! NILP (font_object)) CHECK_FONT_OBJECT (font_object); header = fill_gstring_header (Qnil, from, to, font_object, string); @@ -1498,10 +1501,8 @@ if (! NILP (gstring)) return gstring; - /* Maybe we should check this at the function's entry. --Stef */ - CHECK_NATNUM (from); frompos = XINT (from); - CHECK_NATNUM (to); topos = XINT (to); - + frompos = XINT (from); + topos = XINT (to); if (LGSTRING_GLYPH_LEN (gstring_work) < topos - frompos) gstring_work = Fmake_vector (make_number (topos - frompos + 2), Qnil); LGSTRING_SET_HEADER (gstring_work, header);