summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2011-11-06 20:21:52 +0200
committerEli Zaretskii <eliz@gnu.org>2011-11-06 20:21:52 +0200
commit88a37c4d87ec916146430bfef0a5e90f175b6a2e (patch)
tree268cb8138f5d2640ff56350bbbfe09fc79d2beed /src
parent291d142b33ae732328c61c89e3680f63266d073a (diff)
downloademacs-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/ChangeLog7
-rw-r--r--src/xdisp.c21
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);