Changeset - r20534:322c5581d064
[Not reviewed]
master
0 1 0
rubidium - 11 years ago 2013-07-04 20:06:27
rubidium@openttd.org
(svn r25558) -Fix [FS#5568]: [Squirrel] Infinite recursion loop in freeing data via a looping set of references
1 file changed with 5 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/3rdparty/squirrel/squirrel/squtils.h
Show inline comments
 
@@ -34,15 +34,19 @@ public:
 
		}
 
		_size = v._size;
 
	}
 
	~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); }
 
	void resize(SQUnsignedInteger newsize, const T& fill = T())
 
	{
 
		if(newsize > _allocated)
0 comments (0 inline, 0 general)