mirror of
https://github.com/reactos/reactos.git
synced 2025-05-17 16:27:00 +00:00
[RTL]
Minor code changes to RTL (one would call them "optimisation"). Added some missing paged code. Plus added useful asserts (used to catch r50615 bug!) svn path=/trunk/; revision=50616
This commit is contained in:
parent
dab840147a
commit
6b67a4985e
2 changed files with 33 additions and 2 deletions
|
@ -235,6 +235,8 @@ RtlMultiByteToUnicodeN(
|
|||
ULONG Size = 0;
|
||||
ULONG i;
|
||||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
if (NlsMbCodePageTag == FALSE)
|
||||
{
|
||||
/* single-byte code page */
|
||||
|
@ -300,6 +302,8 @@ RtlMultiByteToUnicodeSize(PULONG UnicodeSize,
|
|||
{
|
||||
ULONG Length = 0;
|
||||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
if (!NlsMbCodePageTag)
|
||||
{
|
||||
/* single-byte code page */
|
||||
|
@ -504,6 +508,8 @@ RtlUnicodeToMultiByteN (PCHAR MbString,
|
|||
ULONG Size = 0;
|
||||
ULONG i;
|
||||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
if (NlsMbCodePageTag == FALSE)
|
||||
{
|
||||
/* single-byte code page */
|
||||
|
|
|
@ -76,7 +76,14 @@ RtlAnsiStringToUnicodeString(
|
|||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
Length = RtlAnsiStringToUnicodeSize(AnsiSource);
|
||||
if (NlsMbCodePageTag == FALSE)
|
||||
{
|
||||
Length = AnsiSource->Length * 2 + sizeof(WCHAR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Length = RtlxAnsiStringToUnicodeSize(AnsiSource);
|
||||
}
|
||||
if (Length > MAXUSHORT) return STATUS_INVALID_PARAMETER_2;
|
||||
UniDest->Length = (USHORT)Length - sizeof(WCHAR);
|
||||
|
||||
|
@ -91,6 +98,9 @@ RtlAnsiStringToUnicodeString(
|
|||
return STATUS_BUFFER_OVERFLOW;
|
||||
}
|
||||
|
||||
/* UniDest->MaximumLength must be even due to sizeof(WCHAR) being 2 */
|
||||
ASSERT(!(UniDest->MaximumLength & 1) && UniDest->Length <= UniDest->MaximumLength);
|
||||
|
||||
Status = RtlMultiByteToUnicodeN(UniDest->Buffer,
|
||||
UniDest->Length,
|
||||
&Index,
|
||||
|
@ -123,6 +133,8 @@ RtlxAnsiStringToUnicodeSize(IN PCANSI_STRING AnsiString)
|
|||
{
|
||||
ULONG Size;
|
||||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
/* Convert from Mb String to Unicode Size */
|
||||
RtlMultiByteToUnicodeSize(&Size,
|
||||
AnsiString->Buffer,
|
||||
|
@ -963,7 +975,16 @@ RtlUnicodeStringToAnsiString(
|
|||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
Length = RtlUnicodeStringToAnsiSize(UniSource);
|
||||
ASSERT(!(UniSource->Length & 1));
|
||||
|
||||
if (NlsMbCodePageTag == FALSE)
|
||||
{
|
||||
Length = (UniSource->Length + sizeof(WCHAR)) / sizeof(WCHAR);
|
||||
}
|
||||
else
|
||||
{
|
||||
Length = RtlxUnicodeStringToAnsiSize(UniSource);
|
||||
}
|
||||
if (Length > MAXUSHORT) return STATUS_INVALID_PARAMETER_2;
|
||||
|
||||
AnsiDest->Length = (USHORT)Length - sizeof(CHAR);
|
||||
|
@ -1953,6 +1974,10 @@ RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString)
|
|||
{
|
||||
ULONG Size;
|
||||
|
||||
PAGED_CODE_RTL();
|
||||
|
||||
ASSERT(!(UnicodeString->Length & 1));
|
||||
|
||||
/* Convert the Unicode String to Mb Size */
|
||||
RtlUnicodeToMultiByteSize(&Size,
|
||||
UnicodeString->Buffer,
|
||||
|
|
Loading…
Reference in a new issue