fix [2542425] memory leak during video recording
[Sorted|Keyed]Vector<TYPE> would leak their whole storage when resized from the end and TYPE had trivial dtor and copy operators. Change-Id: I8555bb1aa0863df72de27d67ae50e20706e90cf5
This commit is contained in:
@@ -351,6 +351,7 @@ void* VectorImpl::_grow(size_t where, size_t amount)
|
|||||||
{
|
{
|
||||||
const SharedBuffer* cur_sb = SharedBuffer::sharedBuffer(mStorage);
|
const SharedBuffer* cur_sb = SharedBuffer::sharedBuffer(mStorage);
|
||||||
SharedBuffer* sb = cur_sb->editResize(new_capacity * mItemSize);
|
SharedBuffer* sb = cur_sb->editResize(new_capacity * mItemSize);
|
||||||
|
release_storage();
|
||||||
mStorage = sb->data();
|
mStorage = sb->data();
|
||||||
} else {
|
} else {
|
||||||
SharedBuffer* sb = SharedBuffer::alloc(new_capacity * mItemSize);
|
SharedBuffer* sb = SharedBuffer::alloc(new_capacity * mItemSize);
|
||||||
@@ -403,6 +404,7 @@ void VectorImpl::_shrink(size_t where, size_t amount)
|
|||||||
{
|
{
|
||||||
const SharedBuffer* cur_sb = SharedBuffer::sharedBuffer(mStorage);
|
const SharedBuffer* cur_sb = SharedBuffer::sharedBuffer(mStorage);
|
||||||
SharedBuffer* sb = cur_sb->editResize(new_capacity * mItemSize);
|
SharedBuffer* sb = cur_sb->editResize(new_capacity * mItemSize);
|
||||||
|
release_storage();
|
||||||
mStorage = sb->data();
|
mStorage = sb->data();
|
||||||
} else {
|
} else {
|
||||||
SharedBuffer* sb = SharedBuffer::alloc(new_capacity * mItemSize);
|
SharedBuffer* sb = SharedBuffer::alloc(new_capacity * mItemSize);
|
||||||
|
|||||||
Reference in New Issue
Block a user