diff src/bidi.c @ 107774:291efac2eff3

Fix infloop in bidi buffers with vertical cursor motion at ZV. bidi.c (bidi_resolve_explicit, bidi_level_of_next_char): Check bidi_it->bytepos against ZV_BYTE instead of bidi_it->ch against BIDI_EOB.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 03 Apr 2010 16:43:23 +0300
parents 0958f6c3f7c6
children ba0339bda073
line wrap: on
line diff
--- a/src/bidi.c	Sat Apr 03 12:09:56 2010 +0300
+++ b/src/bidi.c	Sat Apr 03 16:43:23 2010 +0300
@@ -1242,7 +1242,7 @@
   if (prev_level < new_level
       && bidi_it->type == WEAK_BN
       && bidi_it->ignore_bn_limit == 0 /* only if not already known */
-      && bidi_it->ch != BIDI_EOB       /* not already at EOB */
+      && bidi_it->bytepos < ZV_BYTE    /* not already at EOB */
       && bidi_explicit_dir_char (FETCH_CHAR (bidi_it->bytepos
 					     + bidi_it->ch_len)))
     {
@@ -1648,7 +1648,7 @@
   if (bidi_it->scan_dir == 1)
     {
       /* There's no sense in trying to advance if we hit end of text.  */
-      if (bidi_it->ch == BIDI_EOB)
+      if (bidi_it->bytepos >= ZV_BYTE)
 	return bidi_it->resolved_level;
 
       /* Record the info about the previous character.  */