+2008-09-18 Kenichi Handa <handa@m17n.org>
+
+ * composite.c (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.
+
2008-09-17 Stefan Monnier <monnier@iro.umontreal.ca>
* composite.c (Fcomposition_get_gstring): Yet another int/Lisp_Oject
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);
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))
{
}
}
cmp_it->stop_pos = charpos;
- cmp_it->ch = -2;
}
/* Check if the character at CHARPOS (and BYTEPOS) is composed
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);
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);