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;