{
WCHAR UnicodeChar;
WCHAR OemChar;
- UCHAR Index;
/* If multi-byte code page present */
if (NlsMbOemCodePageTag)
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 Unicode character from the table */
- UnicodeChar = RtlUpcaseUnicodeChar(NlsOemToUnicodeTable[Index]);
-
- /* Receive OEM character from the table */
- OemChar = NlsUnicodeToOemTable[UnicodeChar];
+ /* Receive OEM character from the table */
+ OemChar = NlsUnicodeToOemTable[UnicodeChar];
+ }
/* Not valid character, failed */
if (OemChar == NlsOemDefaultChar)