* Fix memory leak regression from https://github.com/alliedmodders/sourcemod/pull/848.
This commit is contained in:
parent
32d12ea4a6
commit
72acca4b9e
@ -65,25 +65,9 @@ CDataPack::Free(IDataPack *pack)
|
|||||||
|
|
||||||
void CDataPack::Initialize()
|
void CDataPack::Initialize()
|
||||||
{
|
{
|
||||||
for (size_t index = 0; index < elements.length(); ++index)
|
do
|
||||||
{
|
{
|
||||||
switch (elements[index].type)
|
} while (this->RemoveItem());
|
||||||
{
|
|
||||||
case CDataPackType::Raw:
|
|
||||||
{
|
|
||||||
delete elements[index].pData.vval;
|
|
||||||
elements.remove(index--);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CDataPackType::String:
|
|
||||||
{
|
|
||||||
delete elements[index].pData.sval;
|
|
||||||
elements.remove(index--);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
elements.clear();
|
elements.clear();
|
||||||
position = 0;
|
position = 0;
|
||||||
@ -235,11 +219,27 @@ bool CDataPack::RemoveItem(size_t pos)
|
|||||||
{
|
{
|
||||||
pos = position;
|
pos = position;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos >= elements.length())
|
if (pos >= elements.length())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (elements[pos].type)
|
||||||
|
{
|
||||||
|
case CDataPackType::Raw:
|
||||||
|
{
|
||||||
|
delete elements[pos].pData.vval;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case CDataPackType::String:
|
||||||
|
{
|
||||||
|
delete elements[pos].pData.sval;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
elements.remove(pos);
|
elements.remove(pos);
|
||||||
--position;
|
--position;
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user