mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 19:26:32 +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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user