[NTOS]: Hackfix a hack. Should get rid of the recent VAD assert in user32/bpp changes.

svn path=/trunk/; revision=49036
This commit is contained in:
Sir Richard 2010-10-07 17:35:25 +00:00
parent 12e7ae649b
commit 28db1e4106

View file

@ -373,12 +373,23 @@ MmInsertMemoryArea(
Vad = ExAllocatePoolWithTag(NonPagedPool, sizeof(MMVAD), 'Fake');
ASSERT(Vad);
RtlZeroMemory(Vad, sizeof(MMVAD));
EndingAddress = (((ULONG_PTR)PBaseAddress + PRegionSize - 1) | (PAGE_SIZE - 1));
StartingAddress = (ULONG_PTR)PAGE_ALIGN(PBaseAddress);
Vad->StartingVpn = PAGE_ROUND_DOWN(marea->StartingAddress) >> PAGE_SHIFT;
Vad->EndingVpn = PAGE_ROUND_DOWN((ULONG_PTR)marea->EndingAddress - 1) >> PAGE_SHIFT;
if (Vad->EndingVpn < Vad->StartingVpn)
{
DPRINT1("Building a broken VAD. Data: %p %p %lx %lx\n", marea->StartingAddress, marea->EndingAddress, Vad->StartingVpn, Vad->EndingVpn);
}
/*
* For some strange reason, it is perfectly valid to create a MAREA from 0x1000 to... 0x1000.
* In a normal OS/Memory Manager, this would be retarded, but ReactOS allows this (how it works
* I don't even want to know).
*/
if (marea->EndingAddress != marea->StartingAddress)
{
Vad->EndingVpn = PAGE_ROUND_DOWN((ULONG_PTR)marea->EndingAddress - 1) >> PAGE_SHIFT;
}
else
{
Vad->EndingVpn = Vad->StartingVpn;
}
Vad->u.VadFlags.Spare = 1;
Vad->u.VadFlags.PrivateMemory = 1;
MiInsertVad(Vad, MmGetAddressSpaceOwner(AddressSpace));