# HG changeset patch # User Eli Zaretskii # Date 1285753963 -7200 # Node ID c294bdb9cef31345de1330a6c543cad619b676c9 # Parent 167af2298656147d5aabe51b15534c075ac17df0 Fix bug #7128. xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to NEUTRAL_DIR. (handle_invisible_prop, iterate_out_of_display_property) (next_element_from_buffer): If bidi_it.first_elt is set, call bidi_paragraph_init with NO_DEFAULT_P argument non-zero. diff -r 167af2298656 -r c294bdb9cef3 src/ChangeLog --- a/src/ChangeLog Wed Sep 29 05:11:58 2010 -0400 +++ b/src/ChangeLog Wed Sep 29 11:52:43 2010 +0200 @@ -1,5 +1,12 @@ 2010-09-29 Eli Zaretskii + * xdisp.c (reseat_1): Initialize bidi_it.paragraph_dir to + NEUTRAL_DIR. + (handle_invisible_prop, iterate_out_of_display_property) + (next_element_from_buffer): If bidi_it.first_elt is set, call + bidi_paragraph_init with NO_DEFAULT_P argument non-zero. + (Bug#7128) + * print.c (print_object): Fix format string and argument types for printing a Lisp_Misc_Marker. diff -r 167af2298656 -r c294bdb9cef3 src/xdisp.c --- a/src/xdisp.c Wed Sep 29 05:11:58 2010 -0400 +++ b/src/xdisp.c Wed Sep 29 11:52:43 2010 +0200 @@ -3831,7 +3831,7 @@ skip any text at the beginning, which resets the FIRST_ELT flag. */ bidi_paragraph_init (it->paragraph_embedding, - &it->bidi_it, 0); + &it->bidi_it, 1); } do { @@ -5152,7 +5152,7 @@ of a new paragraph, next_element_from_buffer may not have a chance to do that. */ if (it->bidi_it.first_elt && it->bidi_it.charpos < ZV) - bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0); + bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); /* prev_stop can be zero, so check against BEGV as well. */ while (it->bidi_it.charpos >= BEGV && it->prev_stop <= it->bidi_it.charpos @@ -5584,7 +5584,10 @@ it->string_from_display_prop_p = 0; it->face_before_selective_p = 0; if (it->bidi_p) - it->bidi_it.first_elt = 1; + { + it->bidi_it.first_elt = 1; + it->bidi_it.paragraph_dir = NEUTRAL_DIR; + } if (set_stop_p) { @@ -6675,7 +6678,7 @@ { /* If we are at the beginning of a line, we can produce the next element right away. */ - bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0); + bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); bidi_move_to_visually_next (&it->bidi_it); } else @@ -6689,7 +6692,7 @@ IT_BYTEPOS (*it) = CHAR_TO_BYTE (IT_CHARPOS (*it)); it->bidi_it.charpos = IT_CHARPOS (*it); it->bidi_it.bytepos = IT_BYTEPOS (*it); - bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 0); + bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); do { /* Now return to buffer position where we were asked to