summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2009-03-09 23:08:23 +0000
committeryexo <yexo@openttd.org>2009-03-09 23:08:23 +0000
commit03bb87c6b801ab0b201fafd7d5e9a68f26383492 (patch)
treeb2aa3c1daf3c06c5f8875896ce34144e127806ca
parent4a6a30cc52d263614573b56257555f5e1e44b596 (diff)
downloadopenttd-03bb87c6b801ab0b201fafd7d5e9a68f26383492.tar.xz
(svn r15659) -Fix [Squirrel]: The garbage collection would sometimes loop (2^32 - small_value) times instead of only small_value times.
-rw-r--r--src/3rdparty/squirrel/squirrel/sqstate.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/3rdparty/squirrel/squirrel/sqstate.cpp b/src/3rdparty/squirrel/squirrel/sqstate.cpp
index 553262543..52cea8a4c 100644
--- a/src/3rdparty/squirrel/squirrel/sqstate.cpp
+++ b/src/3rdparty/squirrel/squirrel/sqstate.cpp
@@ -189,6 +189,7 @@ SQSharedState::~SQSharedState()
SQCollectable *t = _gc_chain;
SQCollectable *nx = NULL;
while(t) {
+ t->UnMark();
t->_uiRef++;
t->Finalize();
nx = t->_next;
@@ -198,7 +199,7 @@ SQSharedState::~SQSharedState()
}
// assert(_gc_chain==NULL); //just to proove a theory
while(_gc_chain){
- _gc_chain->_uiRef++;
+ _gc_chain->_uiRef--;
_gc_chain->Release();
}
#endif