Mercurial > emacs
changeset 107806:ba0339bda073
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.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Thu, 08 Apr 2010 20:35:10 +0300 |
parents | bcbdb43a80e2 |
children | 2311789d4888 |
files | src/ChangeLog src/bidi.c |
diffstat | 2 files changed, 12 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Thu Apr 08 18:21:25 2010 +0200 +++ b/src/ChangeLog Thu Apr 08 20:35:10 2010 +0300 @@ -1,3 +1,8 @@ +2010-04-08 Eli Zaretskii <eliz@gnu.org> + + * 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 <jan.h.d@swipnet.se> * xsettings.c (current_font, SYSTEM_FONT, XSETTINGS_FONT_NAME): New.
--- a/src/bidi.c Thu Apr 08 18:21:25 2010 +0200 +++ b/src/bidi.c Thu Apr 08 20:35:10 2010 +0300 @@ -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)