]> granicus.if.org Git - fribidi/commitdiff
Fix bug with rule W5
authorBehdad Esfahbod <behdad@behdad.org>
Sat, 5 Jan 2013 01:47:24 +0000 (19:47 -0600)
committerBehdad Esfahbod <behdad@behdad.org>
Sat, 5 Jan 2013 01:47:24 +0000 (19:47 -0600)
Test case added.

This was discovered by running against the Unicode test suite.

https://github.com/behdad/fribidi-vs-unicode

lib/fribidi-bidi.c
test/test_CapRTL_implicit.input
test/test_CapRTL_implicit.reference

index 42a5fab04298e4adc25cafdc6e89c6eb2e32b0f4..6e67d57d55333ee0df4b44d5d34d9bce0cd4e968 100644 (file)
@@ -546,6 +546,10 @@ fribidi_get_par_embedding_levels (
            pp = merge_with_prev (pp);
          else
            RL_TYPE (pp) = prev_type;
+         if (prev_type == next_type && RL_LEVEL (pp) == RL_LEVEL (pp->next))
+           {
+             pp = merge_with_prev (pp->next);
+           }
          continue;             /* As we know the next condition cannot be true. */
        }
 
@@ -564,7 +568,7 @@ fribidi_get_par_embedding_levels (
 
     last_strong = base_dir;
     /* Resolving dependency of loops for rules W4 and W5, W5 may
-       want to prevent W4 to take effect in the next turn, do this 
+       want to prevent W4 to take effect in the next turn, do this
        through "w4". */
     w4 = true;
     /* Resolving dependency of loops for rules W4 and W5 with W7,
index cd5fadf0a90f467d0563eb466d4cb4fe1ef774b5..ef6a3d5471c8be0dadfcf1576446d1d9853e6b6f 100644 (file)
@@ -24,3 +24,4 @@ A TEST FOR WEAK TYPES: 123+,456
 ANOTHER FOR WEAK TYPES: A123,456
 MORE WEAK TYPES: hooloo123,456
 and TEST|L1 ||too
+_<+`+1
index 6ef244a95526e7f822f8f1f362fc3a95e4ecb5cd..e324a7ecac78fce454b21b5dcf7e8fad6650c096 100644 (file)
@@ -24,3 +24,4 @@ A TEST FOR WEAK TYPES: 123+,456     =>     456,123+ :SEPYT KAEW ROF TSET A
 ANOTHER FOR WEAK TYPES: A123,456    =>    123,456A :SEPYT KAEW ROF REHTONA
 MORE WEAK TYPES: hooloo123,456      =>      hooloo123,456 :SEPYT KAEW EROM
 and TEST|L1 ||too                   => and TSET|1L ||too
+_<+`+1                              =>                                +`+1