emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r99851: Fix crash due to incorrect re


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r99851: Fix crash due to incorrect resolution of type of NSM characters (bug#5858).
Date: Thu, 08 Apr 2010 20:35:10 +0300
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 99851
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Thu 2010-04-08 20:35:10 +0300
message:
  Fix crash due to incorrect resolution of type of NSM characters (bug#5858).
  
   bidi.c (bidi_resolve_weak): Use prev.type_after_w1, instead of
   prev.orig_type, for resolving type of NSM.
modified:
  src/ChangeLog
  src/bidi.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-04-08 16:20:32 +0000
+++ b/src/ChangeLog     2010-04-08 17:35:10 +0000
@@ -1,3 +1,8 @@
+2010-04-08  Eli Zaretskii  <address@hidden>
+
+       * bidi.c (bidi_resolve_weak): Use prev.type_after_w1, instead of
+       prev.orig_type, for resolving type of NSM.  (Bug#5858)
+
 2010-04-08  Jan Djärv  <address@hidden>
 
        * xsettings.c (current_font, SYSTEM_FONT, XSETTINGS_FONT_NAME): New.

=== modified file 'src/bidi.c'
--- a/src/bidi.c        2010-04-03 13:43:23 +0000
+++ b/src/bidi.c        2010-04-08 17:35:10 +0000
@@ -1347,12 +1347,14 @@
       if (type == WEAK_NSM)    /* W1 */
        {
          /* Note that we don't need to consider the case where the
-            prev character has its type overridden by an RLO or LRO:
-            such characters are outside the current level run, and
-            thus not relevant to this NSM.  Thus, NSM gets the
-            orig_type of the previous character.  */
+            prev character has its type overridden by an RLO or LRO,
+            because then either the type of this NSM would have been
+            also overridden, or the previous character is outside the
+            current level run, and thus not relevant to this NSM.
+            This is why NSM gets the type_after_w1 of the previous
+            character.  */
          if (bidi_it->prev.type != UNKNOWN_BT)
-           type = bidi_it->prev.orig_type;
+           type = bidi_it->prev.type_after_w1;
          else if (bidi_it->sor == R2L)
            type = STRONG_R;
          else if (bidi_it->sor == L2R)


reply via email to

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