[RTL]
authorDmitry Chapyshev <dmitry@reactos.org>
Sun, 28 Aug 2016 11:05:01 +0000 (11:05 +0000)
committerDmitry Chapyshev <dmitry@reactos.org>
Sun, 28 Aug 2016 11:05:01 +0000 (11:05 +0000)
- Implement IS_TEXT_UNICODE_ILLEGAL_CHARS and IS_TEXT_UNICODE_ASCII16 flags

* It fixes 7 tests for the IsTextUnicode function in advapi32_apitest. All tests passed now

svn path=/trunk/; revision=72486

reactos/sdk/lib/rtl/unicode.c
rostests/apitests/advapi32/IsTextUnicode.c

index 41c9a99..655c04d 100644 (file)
@@ -1295,6 +1295,21 @@ RtlIsTextUnicode(CONST VOID* buf, INT len, INT* pf)
 
         last_lo_byte = lo_byte;
         last_hi_byte = hi_byte;
+
+        switch (s[i])
+        {
+            case 0xFFFE: /* Reverse BOM */
+            case UNICODE_NULL:
+            case 0x0A0D: /* ASCII CRLF (packed into one word) */
+            case 0xFFFF: /* Unicode 0xFFFF */
+                out_flags |= IS_TEXT_UNICODE_ILLEGAL_CHARS;
+                break;
+        }
+    }
+
+    if (lo_byte_diff < 127 && !hi_byte_diff)
+    {
+        out_flags |= IS_TEXT_UNICODE_ASCII16;
     }
 
     if (NlsMbCodePageTag)
index 7bd2785..c4c8162 100644 (file)
@@ -80,7 +80,7 @@ START_TEST(IsTextUnicode)
         NEW_TEST(L"\xFFFE" L"UNICODE String 5 Привет!", IS_TEXT_UNICODE_STATISTICS, 0, FALSE),
         NEW_TEST(L"\xFFFE" L"UNICODE String 5 Привет!", INVALID_FLAG, 0, FALSE),
 
-        // 28
+        // 31
         /* Reverse BOM */
         NEW_TEST(L"UNICODE S" L"\xFFFE" L"tring 5 Привет!", IS_TEXT_UNICODE_ILLEGAL_CHARS, IS_TEXT_UNICODE_ILLEGAL_CHARS, FALSE),
         /* UNICODE_NUL */