Mercurial > emacs
changeset 98213:52d26067a946
(Fcomposition_get_gstring): Yet another int/Lisp_Oject mixup (YAILOM).
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Wed, 17 Sep 2008 21:25:29 +0000 |
parents | 3b2bee2b95a4 |
children | 5803b1114219 |
files | src/ChangeLog src/composite.c |
diffstat | 2 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Wed Sep 17 20:34:16 2008 +0000 +++ b/src/ChangeLog Wed Sep 17 21:25:29 2008 +0000 @@ -1,3 +1,8 @@ +2008-09-17 Stefan Monnier <monnier@iro.umontreal.ca> + + * composite.c (Fcomposition_get_gstring): Yet another int/Lisp_Oject + mixup (YAILOM). + 2008-09-17 Chong Yidong <cyd@stupidchicken.com> * indent.c (Fvertical_motion): Use position reported by iterator
--- a/src/composite.c Wed Sep 17 20:34:16 2008 +0000 +++ b/src/composite.c Wed Sep 17 21:25:29 2008 +0000 @@ -1489,6 +1489,7 @@ Lisp_Object font_object, from, to, string; { Lisp_Object gstring, header; + EMACS_INT frompos, topos; if (! NILP (font_object)) CHECK_FONT_OBJECT (font_object); @@ -1496,8 +1497,13 @@ gstring = gstring_lookup_cache (header); if (! NILP (gstring)) return gstring; - if (LGSTRING_GLYPH_LEN (gstring_work) < to - from) - gstring_work = Fmake_vector (make_number (to - from + 2), Qnil); + + /* Maybe we should check this at the function's entry. --Stef */ + CHECK_NATNUM (from); frompos = XINT (from); + CHECK_NATNUM (to); 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); LGSTRING_SET_ID (gstring_work, Qnil); fill_gstring_body (gstring_work);