mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 10:30:28 +00:00
(svn r25558) -Fix [FS#5568]: [Squirrel] Infinite recursion loop in freeing data via a looping set of references
This commit is contained in:
parent
1e715bfbea
commit
3f7fdd738b
6
src/3rdparty/squirrel/squirrel/squtils.h
vendored
6
src/3rdparty/squirrel/squirrel/squtils.h
vendored
@ -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); }
|
||||
|
Loading…
Reference in New Issue
Block a user