Author: tkreuzer
Date: Sat Feb 16 18:08:58 2013
New Revision: 58323
URL: http://svn.reactos.org/svn/reactos?rev=58323&view=rev
Log:
[RTL]
Fix some VS /analyze warnings, fix RtlGet/SetHeapInformation
Modified:
trunk/reactos/lib/rtl/heap.c
Modified: trunk/reactos/lib/rtl/heap.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/heap.c?rev=58323&r…
==============================================================================
--- trunk/reactos/lib/rtl/heap.c [iso-8859-1] (original)
+++ trunk/reactos/lib/rtl/heap.c [iso-8859-1] Sat Feb 16 18:08:58 2013
@@ -541,7 +541,7 @@
PLIST_ENTRY Current;
PHEAP_UCR_DESCRIPTOR UcrDescriptor;
- DPRINT("RtlpInsertUnCommittedPages(%p %p %x)\n", Segment, Address, Size);
+ DPRINT("RtlpInsertUnCommittedPages(%p %08Ix %Ix)\n", Segment, Address, Size);
/* Go through the list of UCR descriptors, they are sorted from lowest address
to the highest */
@@ -596,7 +596,7 @@
/* "Current" is the descriptor before which our one should go */
InsertTailList(Current, &UcrDescriptor->SegmentEntry);
- DPRINT("Added segment UCR with base %p, size 0x%x\n", Address, Size);
+ DPRINT("Added segment UCR with base %08Ix, size 0x%x\n", Address, Size);
/* Increase counters */
Segment->NumberOfUnCommittedRanges++;
@@ -614,7 +614,7 @@
PHEAP_ENTRY FirstEntry, LastEntry;
NTSTATUS Status;
- DPRINT("RtlpFindAndCommitPages(%p %p %x %p)\n", Heap, Segment, *Size, Address);
+ DPRINT("RtlpFindAndCommitPages(%p %p %Ix %08Ix)\n", Heap, Segment, *Size, Address);
/* Go through UCRs in a segment */
Current = Segment->UCRSegmentList.Flink;
@@ -644,7 +644,7 @@
PAGE_READWRITE);
}
- DPRINT("Committed %d bytes at base %p, UCR size is %d\n", *Size, Address, UcrDescriptor->Size);
+ DPRINT("Committed %Iu bytes at base %08Ix, UCR size is %lu\n", *Size, Address, UcrDescriptor->Size);
/* Fail in unsuccessful case */
if (!NT_SUCCESS(Status))
@@ -679,7 +679,7 @@
UcrDescriptor->Address = (PVOID)((ULONG_PTR)UcrDescriptor->Address + *Size);
UcrDescriptor->Size -= *Size;
- DPRINT("Updating UcrDescriptor %p, new Address %p, size %d\n",
+ DPRINT("Updating UcrDescriptor %p, new Address %p, size %lu\n",
UcrDescriptor, UcrDescriptor->Address, UcrDescriptor->Size);
/* Set various first entry fields */
@@ -1080,7 +1080,7 @@
{
Segment = Heap->Segments[Index];
- if (Segment) DPRINT("Segment[%d] %p with NOUCP %x\n", Index, Segment, Segment->NumberOfUnCommittedPages);
+ if (Segment) DPRINT("Segment[%u] %p with NOUCP %x\n", Index, Segment, Segment->NumberOfUnCommittedPages);
/* Check if its size suits us */
if (Segment &&
@@ -1162,7 +1162,7 @@
MEM_COMMIT,
PAGE_READWRITE);
- DPRINT("Committed %d bytes at base %p\n", CommitSize, Segment);
+ DPRINT("Committed %lu bytes at base %p\n", CommitSize, Segment);
/* Initialize heap segment if commit was successful */
if (NT_SUCCESS(Status))
@@ -1479,7 +1479,7 @@
MEM_COMMIT,
PAGE_READWRITE);
- DPRINT("Committed %d bytes at base %p\n", CommitSize, CommittedAddress);
+ DPRINT("Committed %Iu bytes at base %p\n", CommitSize, CommittedAddress);
if (!NT_SUCCESS(Status))
{
@@ -3303,7 +3303,8 @@
if (CurrentEntry->SegmentOffset != SegmentOffset)
{
- DPRINT1("HEAP: Heap entry %p SegmentOffset is incorrect %x (should be %x)\n", CurrentEntry, SegmentOffset, CurrentEntry->SegmentOffset);
+ DPRINT1("HEAP: Heap entry %p SegmentOffset is incorrect %x (should be %x)\n",
+ CurrentEntry, SegmentOffset, CurrentEntry->SegmentOffset);
return FALSE;
}
@@ -3317,7 +3318,8 @@
/* Check if it's not really the last one */
if (CurrentEntry != Segment->LastValidEntry)
{
- DPRINT1("HEAP: Heap entry %p is not last block in segment (%x)\n", CurrentEntry, Segment->LastValidEntry);
+ DPRINT1("HEAP: Heap entry %p is not last block in segment (%p)\n",
+ CurrentEntry, Segment->LastValidEntry);
return FALSE;
}
}
@@ -3439,24 +3441,24 @@
/* If there is an in-use entry in a free list - that's quite a big problem */
if (FreeEntry->Flags & HEAP_ENTRY_BUSY)
{
- DPRINT1("HEAP: %x-dedicated list free element %x is marked in-use\n", Size, FreeEntry);
+ DPRINT1("HEAP: %Ix-dedicated list free element %p is marked in-use\n", Size, FreeEntry);
return FALSE;
}
/* Check sizes according to that specific list's size */
if ((Size == 0) && (FreeEntry->Size < HEAP_FREELISTS))
{
- DPRINT1("HEAP: Non dedicated list free element %x has size %x which would fit a dedicated list\n", FreeEntry, FreeEntry->Size);
+ DPRINT1("HEAP: Non dedicated list free element %p has size %x which would fit a dedicated list\n", FreeEntry, FreeEntry->Size);
return FALSE;
}
else if (Size && (FreeEntry->Size != Size))
{
- DPRINT1("HEAP: %x-dedicated list free element %x has incorrect size %x\n", Size, FreeEntry, FreeEntry->Size);
+ DPRINT1("HEAP: %Ix-dedicated list free element %p has incorrect size %x\n", Size, FreeEntry, FreeEntry->Size);
return FALSE;
}
else if ((Size == 0) && (FreeEntry->Size < PreviousSize))
{
- DPRINT1("HEAP: Non dedicated list free element %x is not put in order\n", FreeEntry);
+ DPRINT1("HEAP: Non dedicated list free element %p is not put in order\n", FreeEntry);
return FALSE;
}
@@ -3514,13 +3516,13 @@
if (FreeListEntriesCount != FreeBlocksCount)
{
- DPRINT1("HEAP: Free blocks count in arena (%d) does not match free blocks number in the free lists (%d)\n", FreeBlocksCount, FreeListEntriesCount);
+ DPRINT1("HEAP: Free blocks count in arena (%lu) does not match free blocks number in the free lists (%lu)\n", FreeBlocksCount, FreeListEntriesCount);
return FALSE;
}
if (Heap->TotalFreeSize != TotalFreeSize)
{
- DPRINT1("HEAP: Total size of free blocks in arena (%d) does not equal to the one in heap header (%d)\n", TotalFreeSize, Heap->TotalFreeSize);
+ DPRINT1("HEAP: Total size of free blocks in arena (%Iu) does not equal to the one in heap header (%Iu)\n", TotalFreeSize, Heap->TotalFreeSize);
return FALSE;
}
@@ -3562,7 +3564,7 @@
/* Check signature */
if (Heap->Signature != HEAP_SIGNATURE)
{
- DPRINT1("HEAP: Signature %x is invalid for heap %p\n", Heap->Signature, Heap);
+ DPRINT1("HEAP: Signature %lx is invalid for heap %p\n", Heap->Signature, Heap);
return FALSE;
}
@@ -3810,11 +3812,11 @@
/* Pass user value */
if (UserValue)
*UserValue = (PVOID)Extra->Settable;
-
- /* Decode and return user flags */
- if (UserFlags)
- *UserFlags = (HeapEntry->Flags & HEAP_ENTRY_SETTABLE_FLAGS) << 4;
- }
+ }
+
+ /* Decode and return user flags */
+ if (UserFlags)
+ *UserFlags = (HeapEntry->Flags & HEAP_ENTRY_SETTABLE_FLAGS) << 4;
/* Release the heap lock if it was acquired */
if (HeapLocked)
@@ -3900,53 +3902,59 @@
IN SIZE_T HeapInformationLength)
{
/* Setting heap information is not really supported except for enabling LFH */
- if (HeapInformationClass == 0) return STATUS_SUCCESS;
-
- /* Check buffer length */
- if (HeapInformationLength < sizeof(ULONG))
- {
- /* The provided buffer is too small */
- return STATUS_BUFFER_TOO_SMALL;
- }
-
- /* Check for a special magic value for enabling LFH */
- if (*(PULONG)HeapInformation == 2)
- {
+ if (HeapInformationClass == HeapCompatibilityInformation)
+ {
+ /* Check buffer length */
+ if (HeapInformationLength < sizeof(ULONG))
+ {
+ /* The provided buffer is too small */
+ return STATUS_BUFFER_TOO_SMALL;
+ }
+
+ /* Check for a special magic value for enabling LFH */
+ if (*(PULONG)HeapInformation != 2)
+ {
+ return STATUS_UNSUCCESSFUL;
+ }
+
DPRINT1("RtlSetHeapInformation() needs to enable LFH\n");
return STATUS_SUCCESS;
}
- return STATUS_UNSUCCESSFUL;
+ return STATUS_SUCCESS;
}
NTSTATUS
NTAPI
RtlQueryHeapInformation(HANDLE HeapHandle,
HEAP_INFORMATION_CLASS HeapInformationClass,
- PVOID HeapInformation OPTIONAL,
- SIZE_T HeapInformationLength OPTIONAL,
+ PVOID HeapInformation,
+ SIZE_T HeapInformationLength,
PSIZE_T ReturnLength OPTIONAL)
{
PHEAP Heap = (PHEAP)HeapHandle;
/* Only HeapCompatibilityInformation is supported */
- if (HeapInformationClass != HeapCompatibilityInformation)
- return STATUS_UNSUCCESSFUL;
-
- /* Set result length */
- if (ReturnLength) *ReturnLength = sizeof(ULONG);
-
- /* Check buffer length */
- if (HeapInformationLength < sizeof(ULONG))
- {
- /* It's too small, return needed length */
- return STATUS_BUFFER_TOO_SMALL;
- }
-
- /* Return front end heap type */
- *(PULONG)HeapInformation = Heap->FrontEndHeapType;
-
- return STATUS_SUCCESS;
+ if (HeapInformationClass == HeapCompatibilityInformation)
+ {
+ /* Set result length */
+ if (ReturnLength)
+ *ReturnLength = sizeof(ULONG);
+
+ /* Check buffer length */
+ if (HeapInformationLength < sizeof(ULONG))
+ {
+ /* It's too small, return needed length */
+ return STATUS_BUFFER_TOO_SMALL;
+ }
+
+ /* Return front end heap type */
+ *(PULONG)HeapInformation = Heap->FrontEndHeapType;
+
+ return STATUS_SUCCESS;
+ }
+
+ return STATUS_UNSUCCESSFUL;
}
NTSTATUS