]> git.eshelyaron.com Git - emacs.git/commitdiff
(fill_gstring_header): Don't check FROM and TO here.
authorKenichi Handa <handa@m17n.org>
Thu, 18 Sep 2008 06:20:42 +0000 (06:20 +0000)
committerKenichi Handa <handa@m17n.org>
Thu, 18 Sep 2008 06:20:42 +0000 (06:20 +0000)
(composition_compute_stop_pos): Fix handling of static composition.
(Fcomposition_get_gstring): Check FROM and TO at first.

src/ChangeLog
src/composite.c

index ece8e4829f2b30961ae85f62328a3e14b9510e27..a38591dd62ebce8cbb997c8d3e9e0e7b7f710699 100644 (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
index 5773744c08311b0c083fa274190dbf1190ef84f7..1ec6f71855f8a458976830c4976f0ff8d6a09ccc 100644 (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);