changeset 110647:c294bdb9cef3

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.
author Eli Zaretskii <eliz@gnu.org>
date Wed, 29 Sep 2010 11:52:43 +0200
parents 167af2298656
children 256dd50b2a63
files src/ChangeLog src/xdisp.c
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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  <eliz@gnu.org>
 
+	* 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.
 
--- 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