1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-13 05:44:11 +02:00

Div protection

This commit is contained in:
Brian Fiete 2020-06-10 05:44:38 -07:00
parent a955361f6a
commit 4cf6af53bd

View file

@ -136,11 +136,14 @@ void BFGC::RawMarkSpan(tcmalloc_raw::Span* span, int expectedStartPage)
// It's possible we can overestimate elemCount, particularly for large allocations. This doesn't cause a problem // It's possible we can overestimate elemCount, particularly for large allocations. This doesn't cause a problem
// because we can safely mark on complete random memory -- pointer values are always validated before being followed // because we can safely mark on complete random memory -- pointer values are always validated before being followed
intptr elemStride = BF_ALIGN(rawAllocData->mType->mSize, rawAllocData->mType->mAlign); intptr elemStride = BF_ALIGN(rawAllocData->mType->mSize, rawAllocData->mType->mAlign);
intptr dataSize = elementSize - extraDataSize; if (elemStride > 0)
intptr elemCount = dataSize / elemStride; {
for (intptr elemIdx = 0; elemIdx < elemCount; elemIdx++) intptr dataSize = elementSize - extraDataSize;
{ intptr elemCount = dataSize / elemStride;
(((MarkTarget*)((uint8*)spanPtr + elemIdx * elemStride))->*markFunc)(); for (intptr elemIdx = 0; elemIdx < elemCount; elemIdx++)
{
(((MarkTarget*)((uint8*)spanPtr + elemIdx * elemStride))->*markFunc)();
}
} }
} }
} }
@ -284,7 +287,8 @@ void BFGC::RawReportHandleSpan(tcmalloc_raw::Span* span, int expectedStartPage,
typeSize = rawAllocData->mType->mSize; typeSize = rawAllocData->mType->mSize;
else else
typeSize = ((bf::System::Type_NOFLAGS*)rawAllocData->mType)->mSize; typeSize = ((bf::System::Type_NOFLAGS*)rawAllocData->mType)->mSize;
rawLeakInfo.mDataCount = (elementSize - extraDataSize) / typeSize; if (typeSize > 0)
rawLeakInfo.mDataCount = (elementSize - extraDataSize) / typeSize;
} }
else else
rawLeakInfo.mDataCount = 1; rawLeakInfo.mDataCount = 1;