Fix bidi reordering around TAB characters covered by display properties.
authorEli Zaretskii <eliz@gnu.org>
Thu, 18 Aug 2011 16:09:40 +0000 (19:09 +0300)
committerEli Zaretskii <eliz@gnu.org>
Thu, 18 Aug 2011 16:09:40 +0000 (19:09 +0300)
 src/dispextern.h (struct bidi_it): Move disp_pos and disp_prop_p
 members before the level stack, so they would be saved and
 restored when copying iterator state.  Fixes incorrect reordering
 around TABs covered by display properties.

src/ChangeLog
src/dispextern.h

index 0853aa8..037a4b2 100644 (file)
@@ -1,3 +1,10 @@
+2011-08-18  Eli Zaretskii  <eliz@gnu.org>
+
+       * dispextern.h (struct bidi_it): Move disp_pos and disp_prop_p
+       members before the level stack, so they would be saved and
+       restored when copying iterator state.  Fixes incorrect reordering
+       around TABs covered by display properties.
+
 2011-08-18  Andreas Schwab  <schwab@linux-m68k.org>
 
        * process.c (Fnetwork_interface_list): Correctly determine buffer
index fd408c7..084a3f9 100644 (file)
@@ -1859,6 +1859,9 @@ struct bidi_it {
   EMACS_INT ignore_bn_limit;   /* position until which to ignore BNs */
   bidi_dir_t sor;              /* direction of start-of-run in effect */
   int scan_dir;                        /* direction of text scan, 1: forw, -1: back */
+  EMACS_INT disp_pos;          /* position of display string after ch */
+  int disp_prop_p;             /* if non-zero, there really is a
+                                  `display' property/string at disp_pos */
   int stack_idx;               /* index of current data on the stack */
   /* Note: Everything from here on is not copied/saved when the bidi
      iterator state is saved, pushed, or popped.  So only put here
@@ -1867,9 +1870,6 @@ struct bidi_it {
   struct bidi_string_data string;      /* string to reorder */
   bidi_dir_t paragraph_dir;    /* current paragraph direction */
   EMACS_INT separator_limit;   /* where paragraph separator should end */
-  EMACS_INT disp_pos;          /* position of display string after ch */
-  int disp_prop_p;             /* if non-zero, there really is a
-                                  `display' property/string at disp_pos */
   unsigned first_elt : 1;      /* if non-zero, examine current char first */
   unsigned new_paragraph : 1;  /* if non-zero, we expect a new paragraph */
   unsigned frame_window_p : 1; /* non-zero if displaying on a GUI frame */