diff src/composite.c @ 98068:9723eb0d11ab

(FORWARD_CHAR): Check STOP after incrementing (POSITION).pos.
author Kenichi Handa <handa@m17n.org>
date Sun, 07 Sep 2008 01:11:46 +0000
parents 59bcf1726f2c
children 2eda9a0daa3e
line wrap: on
line diff
--- a/src/composite.c	Sun Sep 07 00:52:54 2008 +0000
+++ b/src/composite.c	Sun Sep 07 01:11:46 2008 +0000
@@ -1189,11 +1189,17 @@
 /* Update the members of POSTION to the next character boundary.  */
 #define FORWARD_CHAR(POSITION, STOP)					\
   do {									\
+    (POSITION).pos++;							\
     if ((POSITION).pos == (STOP))					\
-      (POSITION).p = GAP_END_ADDR;					\
-    (POSITION).pos++;							\
-    (POSITION).pos_byte += BYTES_BY_CHAR_HEAD (*((POSITION).p));	\
-    (POSITION).p += BYTES_BY_CHAR_HEAD (*((POSITION).p));		\
+      {									\
+	(POSITION).p = GAP_END_ADDR;					\
+	(POSITION).pos_byte = GPT_BYTE;					\
+      }									\
+    else								\
+      {									\
+	(POSITION).p += BYTES_BY_CHAR_HEAD (*((POSITION).p));		\
+	(POSITION).pos_byte += BYTES_BY_CHAR_HEAD (*((POSITION).p));	\
+      }									\
   } while (0)
 
 /* Update the members of POSTION to the previous character boundary.  */