From f57de63a0662316bf03b41f2c5eb65a0f1e77a51 Mon Sep 17 00:00:00 2001 From: Dmitry Chapyshev Date: Mon, 5 Sep 2016 19:14:22 +0000 Subject: [PATCH] [RTL] - It is impossible to look for multi byte char in single byte table svn path=/trunk/; revision=72586 --- reactos/sdk/lib/rtl/unicode.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/reactos/sdk/lib/rtl/unicode.c b/reactos/sdk/lib/rtl/unicode.c index 2441a1f9c36..99357e272a3 100644 --- a/reactos/sdk/lib/rtl/unicode.c +++ b/reactos/sdk/lib/rtl/unicode.c @@ -515,7 +515,6 @@ RtlIsValidOemCharacter(IN PWCHAR Char) { WCHAR UnicodeChar; WCHAR OemChar; - UCHAR Index; /* If multi-byte code page present */ if (NlsMbOemCodePageTag) @@ -528,19 +527,21 @@ RtlIsValidOemCharacter(IN PWCHAR Char) if (NlsOemLeadByteInfo[HIBYTE(OemChar)]) Offset = NlsOemLeadByteInfo[HIBYTE(OemChar)]; - Index = LOBYTE(OemChar) + Offset; + /* Receive Unicode character from the table */ + UnicodeChar = RtlUpcaseUnicodeChar(NlsOemToUnicodeTable[LOBYTE(OemChar) + Offset]); + + /* Receive OEM character from the table */ + OemChar = NlsUnicodeToMbOemTable[UnicodeChar]; } else { - Index = NlsUnicodeToOemTable[*Char]; + /* Receive Unicode character from the table */ + UnicodeChar = RtlUpcaseUnicodeChar(NlsOemToUnicodeTable[(UCHAR)NlsUnicodeToOemTable[*Char]]); + + /* Receive OEM character from the table */ + OemChar = NlsUnicodeToOemTable[UnicodeChar]; } - /* Receive Unicode character from the table */ - UnicodeChar = RtlUpcaseUnicodeChar(NlsOemToUnicodeTable[Index]); - - /* Receive OEM character from the table */ - OemChar = NlsUnicodeToOemTable[UnicodeChar]; - /* Not valid character, failed */ if (OemChar == NlsOemDefaultChar) return FALSE;