Merge remote-tracking branch 'origin/master' into custom

This commit is contained in:
roytam1 2020-11-20 09:32:22 +08:00
commit c5bb4ee5fa
20 changed files with 405 additions and 652 deletions

View file

@ -248,12 +248,28 @@ nsTArray_base<Alloc, Copy>::ShrinkCapacity(size_type aElemSize,
return;
}
size_type size = sizeof(Header) + length * aElemSize;
void* ptr = nsTArrayFallibleAllocator::Realloc(mHdr, size);
if (!ptr) {
return;
size_type newSize = sizeof(Header) + length * aElemSize;
Header* newHeader;
if (!Copy::allowRealloc) {
// Malloc() and copy
newHeader = static_cast<Header*>(nsTArrayFallibleAllocator::Malloc(newSize));
if (!newHeader) {
return;
}
Copy::MoveNonOverlappingRegionWithHeader(newHeader, mHdr, Length(), aElemSize);
nsTArrayFallibleAllocator::Free(mHdr);
} else {
// Realloc() existing data
newHeader = static_cast<Header*>(nsTArrayFallibleAllocator::Realloc(mHdr, newSize));
if (!newHeader) {
return;
}
}
mHdr = static_cast<Header*>(ptr);
mHdr = newHeader;
mHdr->mCapacity = length;
}