Merge pull request #13249 from shenweip/mem_alloc

Correct the alignment size when allocating memory at a position
This commit is contained in:
Unknown W. Brackets 2020-08-05 10:02:40 -04:00 committed by GitHub
commit c2255fd10a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -163,13 +163,13 @@ u32 BlockAllocator::AllocAt(u32 position, u32 size, const char *tag)
alignedPosition &= ~(grain_ - 1); alignedPosition &= ~(grain_ - 1);
// Since the position was decreased, size must increase. // Since the position was decreased, size must increase.
alignedSize += alignedPosition - position; alignedSize += position - alignedPosition;
} }
// Upalign size to grain. // Upalign size to grain.
alignedSize = (alignedSize + grain_ - 1) & ~(grain_ - 1); alignedSize = (alignedSize + grain_ - 1) & ~(grain_ - 1);
// Tell the caller the allocated size from their requested starting position. // Tell the caller the allocated size from their requested starting position.
size = alignedSize - (alignedPosition - position); size = alignedSize - (position - alignedPosition);
Block *bp = GetBlockFromAddress(alignedPosition); Block *bp = GetBlockFromAddress(alignedPosition);
if (bp != NULL) if (bp != NULL)