Commit e34cbeb7 authored by mrowe@apple.com's avatar mrowe@apple.com

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:


git-svn-id: svn://svn.chromium.org/blink/trunk@29443 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent d9b37e2b
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
......
......@@ -90,6 +90,15 @@ static inline unsigned getCurrentTime() {
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());
......@@ -103,6 +112,8 @@ JSGlobalObject::~JSGlobalObject()
if (s_head == this)
s_head = 0;
deleteActivationStack();
delete d();
}
......@@ -128,6 +139,8 @@ void JSGlobalObject::init()
d()->recursion = 0;
d()->debugger = 0;
d()->activations = 0;
reset(prototype());
}
......@@ -202,7 +215,10 @@ void JSGlobalObject::reset(JSValue* prototype)
ExecState* exec = &d()->globalExec;
d()->activations = new ActivationStackNode;
deleteActivationStack();
ActivationStackNode* newStackNode = new ActivationStackNode;
newStackNode->prev = 0;
d()->activations = newStackNode;
d()->activationCount = 0;
// Prototypes
......
......@@ -244,6 +244,7 @@ namespace KJS {
bool checkTimeout();
void resetTimeoutCheck();
void deleteActivationStack();
void checkActivationCount();
static JSGlobalObject* s_head;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment