+2008-01-12 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Mark Rowe.
+
+ Fix http://bugs.webkit.org/show_bug.cgi?id=16852
+ Fixes leaking of ActivationStackNode objects.
+
+ * kjs/JSGlobalObject.cpp:
+ (KJS::JSGlobalObject::deleteActivationStack):
+ (KJS::JSGlobalObject::~JSGlobalObject):
+ (KJS::JSGlobalObject::init):
+ (KJS::JSGlobalObject::reset):
+ * kjs/JSGlobalObject.h:
+
2008-01-12 Darin Adler <darin@apple.com>
- try to fix Qt Windows build
JSGlobalObject* JSGlobalObject::s_head = 0;
+void JSGlobalObject::deleteActivationStack()
+{
+ ActivationStackNode* prevNode = 0;
+ for (ActivationStackNode* currentNode = d()->activations; currentNode; currentNode = prevNode) {
+ prevNode = currentNode->prev;
+ delete currentNode;
+ }
+}
+
JSGlobalObject::~JSGlobalObject()
{
ASSERT(JSLock::currentThreadIsHoldingLock());
if (s_head == this)
s_head = 0;
+ deleteActivationStack();
+
delete d();
}
d()->recursion = 0;
d()->debugger = 0;
+ d()->activations = 0;
+
reset(prototype());
}
ExecState* exec = &d()->globalExec;
- d()->activations = new ActivationStackNode;
+ deleteActivationStack();
+ ActivationStackNode* newStackNode = new ActivationStackNode;
+ newStackNode->prev = 0;
+ d()->activations = newStackNode;
d()->activationCount = 0;
// Prototypes