diff options
author | Eli Zaretskii <eliz@gnu.org> | 2011-06-11 19:50:09 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2011-06-11 19:50:09 +0300 |
commit | f23590ccc9bb0b6d335fb098b56ea07f4de6c91c (patch) | |
tree | 17d0e788285060ee04a0d4277a17aef542631615 | |
parent | 34c48e575a30f075daedda6b487c7d24181743be (diff) | |
download | emacs-f23590ccc9bb0b6d335fb098b56ea07f4de6c91c.tar.gz emacs-f23590ccc9bb0b6d335fb098b56ea07f4de6c91c.tar.bz2 emacs-f23590ccc9bb0b6d335fb098b56ea07f4de6c91c.zip |
Fixed a bug with displaying strings padded with blanks.
src/xdisp.c (set_iterator_to_next): Advance string position
correctly when padding it with blanks.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/xdisp.c | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3ca0241f47c..071bcb23a03 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2011-06-11 Eli Zaretskii <eliz@gnu.org> + * xdisp.c (set_iterator_to_next): Advance string position + correctly when padding it with blanks. + +2011-06-11 Eli Zaretskii <eliz@gnu.org> + * xdisp.c (next_element_from_buffer): Improve commentary for when the iterator is before prev_stop. (init_iterator): Initialize bidi_p from the default value of diff --git a/src/xdisp.c b/src/xdisp.c index efd29895ea2..7494d5c5e48 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -6305,7 +6305,12 @@ set_iterator_to_next (struct it *it, int reseat_p) case GET_FROM_C_STRING: /* Current display element of IT is from a C string. */ - if (!it->bidi_p) + if (!it->bidi_p + /* If the string position is beyond string_nchars, it means + next_element_from_c_string is padding the string with + blanks, in which case we bypass the bidi iterator, + because it cannot deal with such virtual characters. */ + || IT_CHARPOS (*it) >= it->string_nchars) { IT_BYTEPOS (*it) += it->len; IT_CHARPOS (*it) += 1; @@ -6428,7 +6433,13 @@ set_iterator_to_next (struct it *it, int reseat_p) } else { - if (!it->bidi_p) + if (!it->bidi_p + /* If the string position is beyond string_nchars, it + means next_element_from_string is padding the string + with blanks, in which case we bypass the bidi + iterator, because it cannot deal with such virtual + characters. */ + || IT_STRING_CHARPOS (*it) >= it->string_nchars) { IT_STRING_BYTEPOS (*it) += it->len; IT_STRING_CHARPOS (*it) += 1; |