(svn r25558) -Fix [FS#5568]: [Squirrel] Infinite recursion loop in freeing data via a looping set of references

This commit is contained in:
rubidium 2013-07-04 20:06:27 +00:00
parent 1e715bfbea
commit 3f7fdd738b

View File

@ -37,9 +37,13 @@ public:
~sqvector()
{
if(_allocated) {
/* Break freeing loops, if this vector (indirectly) links to itself. */
size_t allocated_size = _allocated * sizeof(T);
_allocated = 0;
for(SQUnsignedInteger i = 0; i < _size; i++)
_vals[i].~T();
SQ_FREE(_vals, (_allocated * sizeof(T)));
SQ_FREE(_vals, allocated_size);
}
}
void reserve(SQUnsignedInteger newsize) { _realloc(newsize); }