(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.
This commit is contained in:
Kenichi Handa 2008-09-18 06:20:42 +00:00
parent 46f905e18a
commit ea8ba975fb
2 changed files with 15 additions and 8 deletions

View file

@ -1,3 +1,9 @@
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

View file

@ -812,9 +812,8 @@ fill_gstring_header (header, start, end, font_object, string)
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 @@ composition_compute_stop_pos (cmp_it, charpos, bytepos, endpos, string)
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 @@ composition_compute_stop_pos (cmp_it, charpos, bytepos, endpos, string)
}
}
cmp_it->stop_pos = charpos;
cmp_it->ch = -2;
}
/* Check if the character at CHARPOS (and BYTEPOS) is composed
@ -1491,6 +1492,8 @@ must be ignore. */)
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 @@ must be ignore. */)
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);