diff options
author | Eli Zaretskii <eliz@gnu.org> | 2011-11-06 20:21:52 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2011-11-06 20:21:52 +0200 |
commit | 88a37c4d87ec916146430bfef0a5e90f175b6a2e (patch) | |
tree | 268cb8138f5d2640ff56350bbbfe09fc79d2beed /src | |
parent | 291d142b33ae732328c61c89e3680f63266d073a (diff) | |
download | emacs-88a37c4d87ec916146430bfef0a5e90f175b6a2e.tar.gz |
Fix bug #9963 with abort in "temacs -nw".
src/xdisp.c (init_iterator, reseat_to_string): Don't set the
iterator's bidi_p flag if Vpurify_flag is non-nil.
(Fcurrent_bidi_paragraph_direction): If Vpurify_flag is non-nil,
return Qleft_to_right.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 7 | ||||
-rw-r--r-- | src/xdisp.c | 21 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 12e9a5c9e57..e393da21cc2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2011-11-06 Eli Zaretskii <eliz@gnu.org> + + * xdisp.c (init_iterator, reseat_to_string): Don't set the + iterator's bidi_p flag if Vpurify_flag is non-nil. (Bug#9963) + (Fcurrent_bidi_paragraph_direction): If Vpurify_flag is non-nil, + return Qleft_to_right. + 2011-11-06 Chong Yidong <cyd@gnu.org> * window.c (Fwindow_live_p, Fwindow_frame, Fframe_root_window) diff --git a/src/xdisp.c b/src/xdisp.c index f358cdd6270..197fb748598 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2763,9 +2763,13 @@ init_iterator (struct it *it, struct window *w, /* Do we need to reorder bidirectional text? Not if this is a unibyte buffer: by definition, none of the single-byte characters are strong R2L, so no reordering is needed. And - bidi.c doesn't support unibyte buffers anyway. */ + bidi.c doesn't support unibyte buffers anyway. Also, don't + reorder while we are loading loadup.el, since the tables of + character properties needed for reordering are not yet + available. */ it->bidi_p = - !NILP (BVAR (current_buffer, bidi_display_reordering)) + NILP (Vpurify_flag) + && !NILP (BVAR (current_buffer, bidi_display_reordering)) && it->multibyte_p; /* If we are to reorder bidirectional text, init the bidi @@ -6136,8 +6140,12 @@ reseat_to_string (struct it *it, const char *s, Lisp_Object string, it->multibyte_p = multibyte > 0; /* Bidirectional reordering of strings is controlled by the default - value of bidi-display-reordering. */ - it->bidi_p = !NILP (BVAR (&buffer_defaults, bidi_display_reordering)); + value of bidi-display-reordering. Don't try to reorder while + loading loadup.el, as the necessary character property tables are + not yet available. */ + it->bidi_p = + NILP (Vpurify_flag) + && !NILP (BVAR (&buffer_defaults, bidi_display_reordering)); if (s == NULL) { @@ -19460,7 +19468,10 @@ See also `bidi-paragraph-direction'. */) } if (NILP (BVAR (buf, bidi_display_reordering)) - || NILP (BVAR (buf, enable_multibyte_characters))) + || NILP (BVAR (buf, enable_multibyte_characters)) + /* When we are loading loadup.el, the character property tables + needed for bidi iteration are not yet available. */ + || !NILP (Vpurify_flag)) return Qleft_to_right; else if (!NILP (BVAR (buf, bidi_paragraph_direction))) return BVAR (buf, bidi_paragraph_direction); |