- Fixed RtlMultiByteToUnicodeN & RtlAnsiCharToUnicodeChar prototype
- Added missing paged code marker to RtlAnsiCharToUnicodeChar
- Added a small hack to RtlAnsiCharToUnicodeChar. Indeed, when it's called during second stage, it's failing due to missing NLS table.
Probably usetup that doesn't define a registry entry. And then, FreeLdr just passes null pointer.
svn path=/trunk/; revision=50836
*/
NTSTATUS NTAPI
RtlMultiByteToUnicodeN(
- IN PWCHAR UnicodeString,
+ OUT PWCHAR UnicodeString,
IN ULONG UnicodeSize,
- IN PULONG ResultSize,
+ OUT PULONG ResultSize,
IN PCSTR MbString,
IN ULONG MbSize)
{
*ResultSize = i * sizeof(WCHAR);
}
- return(STATUS_SUCCESS);
+ return STATUS_SUCCESS;
}
*/
WCHAR
NTAPI
-RtlAnsiCharToUnicodeChar(IN PUCHAR *AnsiChar)
+RtlAnsiCharToUnicodeChar(IN OUT PUCHAR *AnsiChar)
{
ULONG Size;
NTSTATUS Status;
WCHAR UnicodeChar = L' ';
- Size = (NlsLeadByteInfo[**AnsiChar] == 0) ? 1 : 2;
+ PAGED_CODE_RTL();
+
+ if (NlsLeadByteInfo)
+ {
+ Size = (NlsLeadByteInfo[**AnsiChar] == 0) ? 1 : 2;
+ }
+ else
+ {
+ DPRINT1("HACK::Shouldn't have happened! Consider fixing Usetup and registry entries it creates on install\n");
+ Size = 1;
+ }
Status = RtlMultiByteToUnicodeN(&UnicodeChar,
sizeof(WCHAR),