Fixes possible memory leak in QContiguousCache
When inserting an item on a position that is already occupied, the destructor of the old item was never invoked. Change-Id: I01dc4ec9f2da5027284eba94e1a9ad36b062a50d Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
c2f10f915f
commit
b4075c8ea3
|
|
@ -387,10 +387,12 @@ void QContiguousCache<T>::insert(int pos, const T &value)
|
|||
Q_ASSERT_X(pos >= 0 && pos < INT_MAX, "QContiguousCache<T>::insert", "index out of range");
|
||||
detach();
|
||||
if (containsIndex(pos)) {
|
||||
if(QTypeInfo<T>::isComplex)
|
||||
if (QTypeInfo<T>::isComplex) {
|
||||
(p->array + pos % d->alloc)->~T();
|
||||
new (p->array + pos % d->alloc) T(value);
|
||||
else
|
||||
} else {
|
||||
p->array[pos % d->alloc] = value;
|
||||
}
|
||||
} else if (pos == d->offset-1)
|
||||
prepend(value);
|
||||
else if (pos == d->offset+d->count)
|
||||
|
|
|
|||
Loading…
Reference in New Issue