コード例 #1
0
ファイル: nsTArray.cpp プロジェクト: isleon/Jaxer
void
nsTArray_base::ShrinkCapacity(size_type elemSize) {
  if (mHdr == &sEmptyHdr || UsesAutoArrayBuffer())
    return;

  if (mHdr->mLength >= mHdr->mCapacity)  // should never be greater than...
    return;

  size_type length = Length();

  if (IsAutoArray() && GetAutoArrayBuffer()->mCapacity >= length) {
    Header* header = GetAutoArrayBuffer();

    // Copy data, but don't copy the header to avoid overwriting mCapacity
    header->mLength = length;
    memcpy(header + 1, mHdr + 1, length * elemSize);

    NS_Free(mHdr);
    mHdr = header;
    return;
  }

  if (length == 0) {
    NS_ASSERTION(!IsAutoArray(), "autoarray should have fit 0 elements");
    NS_Free(mHdr);
    mHdr = &sEmptyHdr;
    return;
  }

  size_type size = sizeof(Header) + length * elemSize;
  void *ptr = NS_Realloc(mHdr, size);
  if (!ptr)
    return;
  mHdr = static_cast<Header*>(ptr);
  mHdr->mCapacity = length;
}
コード例 #2
0
ファイル: nsMemoryImpl.cpp プロジェクト: Andrel322/gecko-dev
nsMemoryImpl::Realloc(void* aPtr, size_t aSize)
{
  return NS_Realloc(aPtr, aSize);
}
コード例 #3
0
ファイル: nsMemoryImpl.cpp プロジェクト: at13/mozilla-central
nsMemoryImpl::Realloc(void* ptr, size_t size)
{
    return NS_Realloc(ptr, size);
}