NewMemoryMapEntry = MemoryMap;\r
MemoryMapEnd = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)MemoryMap + *MemoryMapSize);\r
while ((UINTN)MemoryMapEntry < (UINTN)MemoryMapEnd) {\r
- CopyMem (NewMemoryMapEntry, MemoryMapEntry, sizeof (EFI_MEMORY_DESCRIPTOR));\r
+ CopyMem (NewMemoryMapEntry, MemoryMapEntry, DescriptorSize);\r
NextMemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
\r
do {\r
- MergeGuardPages (NewMemoryMapEntry, NextMemoryMapEntry->PhysicalStart);\r
+ if ((UINTN)NextMemoryMapEntry < (UINTN)MemoryMapEnd) {\r
+ MergeGuardPages (NewMemoryMapEntry, NextMemoryMapEntry->PhysicalStart);\r
+ }\r
+\r
MemoryBlockLength = LShiftU64 (NewMemoryMapEntry->NumberOfPages, EFI_PAGE_SHIFT);\r
if (((UINTN)NextMemoryMapEntry < (UINTN)MemoryMapEnd) &&\r
(NewMemoryMapEntry->Type == NextMemoryMapEntry->Type) &&\r