diff options
| author | Thiago Macieira <thiago.macieira@nokia.com> | 2010-02-26 16:49:58 (GMT) |
|---|---|---|
| committer | Thiago Macieira <thiago.macieira@nokia.com> | 2010-02-26 16:49:58 (GMT) |
| commit | 7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d (patch) | |
| tree | 27bbf204f0fac8d99b4b4056337fc66c2733b24d /src/script/api/qscriptengine_p.h | |
| parent | 27e403d9c6185c606980bb7881e39a2c88138a13 (diff) | |
| parent | 5d1d426afe07458a91b4908881554653285ed04c (diff) | |
| download | Qt-7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d.zip Qt-7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d.tar.gz Qt-7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d.tar.bz2 | |
Merge remote branch 'origin/4.6' into qt-master-from-4.6
Conflicts:
mkspecs/common/symbian/symbian.conf
qmake/generators/symbian/initprojectdeploy_symbian.cpp
qmake/generators/symbian/symmake_abld.h
Diffstat (limited to 'src/script/api/qscriptengine_p.h')
| -rw-r--r-- | src/script/api/qscriptengine_p.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h index 79294fe..d0d020a 100644 --- a/src/script/api/qscriptengine_p.h +++ b/src/script/api/qscriptengine_p.h @@ -354,6 +354,8 @@ public: int agentLineNumber; QScriptValuePrivate *registeredScriptValues; QScriptValuePrivate *freeScriptValues; + static const int maxFreeScriptValues = 256; + int freeScriptValuesCount; QScriptStringPrivate *registeredScriptStrings; QHash<int, QScriptTypeInfo*> m_typeInfos; int processEventsInterval; @@ -521,6 +523,7 @@ inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(siz if (freeScriptValues) { QScriptValuePrivate *p = freeScriptValues; freeScriptValues = p->next; + --freeScriptValuesCount; return p; } return reinterpret_cast<QScriptValuePrivate*>(qMalloc(size)); @@ -528,8 +531,13 @@ inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(siz inline void QScriptEnginePrivate::freeScriptValuePrivate(QScriptValuePrivate *p) { - p->next = freeScriptValues; - freeScriptValues = p; + if (freeScriptValuesCount < maxFreeScriptValues) { + p->next = freeScriptValues; + freeScriptValues = p; + ++freeScriptValuesCount; + } else { + qFree(p); + } } inline void QScriptEnginePrivate::registerScriptValue(QScriptValuePrivate *value) |
