[PATCH 2/2] dwrite: Use enum members for class testing, simplify reseting to NI before applying Nx rules

Nikolay Sivov nsivov at codeweavers.com
Wed Feb 10 04:10:48 CST 2016


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/dwrite/bidi.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/dlls/dwrite/bidi.c b/dlls/dwrite/bidi.c
index abf3604..16ca25f 100644
--- a/dlls/dwrite/bidi.c
+++ b/dlls/dwrite/bidi.c
@@ -759,16 +759,18 @@ static void bidi_resolve_neutrals(IsolatedRun *run)
 
     /* Translate isolates into NI */
     for (i = 0; i < run->length; i++) {
-        if (bidi_is_isolate(*run->item[i].class))
-            *run->item[i].class = NI;
-
         switch (*run->item[i].class) {
             case B:
             case S:
-            case WS: *run->item[i].class = NI;
+            case WS:
+            case FSI:
+            case LRI:
+            case RLI:
+            case PDI: *run->item[i].class = NI;
         }
 
-        ASSERT(*run->item[i].class < 5 || *run->item[i].class == BN); /* "Only NI, L, R,  AN, EN and BN are allowed" */
+        /* "Only NI, L, R, AN, EN and BN are allowed" */
+        ASSERT(*run->item[i].class <= EN || *run->item[i].class == BN);
     }
 
     /* N0: Skipping bracketed pairs for now */
@@ -900,8 +902,8 @@ static void bidi_resolve_implicit(const UINT8 *classes, UINT8 *levels, int sos,
         if (classes[i] == BN)
             continue;
 
-        ASSERT(classes[i] > 0); /* "No Neutrals allowed to survive here." */
-        ASSERT(classes[i] < 5); /* "Out of range." */
+        ASSERT(classes[i] != ON); /* "No Neutrals allowed to survive here." */
+        ASSERT(classes[i] <= EN); /* "Out of range." */
 
         if (odd(levels[i]) && (classes[i] == L || classes[i] == EN || classes[i] == AN))
             levels[i]++;
-- 
2.7.0




More information about the wine-patches mailing list