[FriBidi-commit] fribidi/lib fribidi-bidi.c,1.14,1.15

Behdad Esfahbod behdad at pdx.freedesktop.org
Fri Jun 18 15:41:41 PDT 2004


Update of /cvs/fribidi/fribidi/lib
In directory pdx:/tmp/cvs-serv7777/lib

Modified Files:
	fribidi-bidi.c 
Log Message:
Rever back to our old level setting for BN and explicits.  The new method was
buggy.  A test case added to capture that.


Index: fribidi-bidi.c
===================================================================
RCS file: /cvs/fribidi/fribidi/lib/fribidi-bidi.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- fribidi-bidi.c	18 Jun 2004 19:21:33 -0000	1.14
+++ fribidi-bidi.c	18 Jun 2004 22:41:39 -0000	1.15
@@ -451,26 +451,19 @@
 		    FRIBIDI_DIR_TO_LEVEL (this_type);
 		  PUSH_STATUS;
 		}
-
-	      /* Set level to the higher level */
-	      RL_LEVEL (pp) = level;
 	    }
 	  else if (this_type == FRIBIDI_TYPE_PDF)
 	    {
-	      /* Set level to the higher level */
-	      RL_LEVEL (pp) = level;
-
 	      /* 3. Terminating Embeddings and overrides */
 	      /*   X7. With each PDF, determine the matching embedding or
 	         override code. */
 	      for (i = RL_LEN (pp); i; i--)
 		POP_STATUS;
 	    }
-	  else
-	    RL_LEVEL (pp) = level;
 
 	  /* X9. Remove all RLE, LRE, RLO, LRO, PDF, and BN codes. */
 	  /* Remove element and add it to explicits_list */
+	  RL_LEVEL (pp) = FRIBIDI_SENTINEL;
 	  temp_link.next = pp->next;
 	  move_node_before (pp, explicits_list);
 	  pp = &temp_link;
@@ -739,13 +732,12 @@
     explicits_list = NULL;
     if UNLIKELY
       (!stat) goto out;
-    /* We don't need this code since we set levels for everything we remove.
+
     p = main_run_list->next;
     if (p != main_run_list && p->level == FRIBIDI_SENTINEL)
       p->level = base_level;
     for_run_list (p, main_run_list) if (p->level == FRIBIDI_SENTINEL)
       p->level = p->prev->level;
-    */
   }
 
 # if DEBUG
@@ -932,7 +924,7 @@
 
     /* L1. Reset the embedding levels of some chars:
            4. any sequence of white space characters at the end of the line.*/
-    for (i = len - 1; i >= 0 &&
+    for (i = off + len - 1; i >= off &&
 	FRIBIDI_IS_EXPLICIT_OR_BN_OR_WS (BIDI_TYPE (i)); i--)
       embedding_levels[i] = FRIBIDI_DIR_TO_LEVEL (base_dir);
   }




More information about the FriBidi-Commit mailing list