emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r99821: Fix infloop in bidi buffers w


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r99821: Fix infloop in bidi buffers with vertical cursor motion at ZV.
Date: Sat, 03 Apr 2010 16:43:23 +0300
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 99821
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sat 2010-04-03 16:43:23 +0300
message:
  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.
modified:
  src/ChangeLog
  src/bidi.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-04-03 09:09:56 +0000
+++ b/src/ChangeLog     2010-04-03 13:43:23 +0000
@@ -1,5 +1,9 @@
 2010-04-03  Eli Zaretskii  <address@hidden>
 
+       * 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.  Fixes infloop with vertical cursor motion at ZV.
+
        * w32fns.c (x_create_tip_frame): Copy `parms' before we modify it
        in this function.  (Bug#5703)
 

=== modified file 'src/bidi.c'
--- a/src/bidi.c        2010-03-30 16:29:02 +0000
+++ b/src/bidi.c        2010-04-03 13:43:23 +0000
@@ -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.  */


reply via email to

[Prev in Thread] Current Thread [Next in Thread]