Changeset 29443 in webkit


Ignore:
Timestamp:
Jan 12, 2008 8:52:01 PM (16 years ago)
Author:
mrowe@apple.com
Message:

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:
Location:
trunk/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r29440 r29443  
     12008-01-12  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
     2
     3        Reviewed by Mark Rowe.
     4
     5        Fix http://bugs.webkit.org/show_bug.cgi?id=16852
     6        Fixes leaking of ActivationStackNode objects.
     7
     8        * kjs/JSGlobalObject.cpp:
     9        (KJS::JSGlobalObject::deleteActivationStack):
     10        (KJS::JSGlobalObject::~JSGlobalObject):
     11        (KJS::JSGlobalObject::init):
     12        (KJS::JSGlobalObject::reset):
     13        * kjs/JSGlobalObject.h:
     14
    1152008-01-12  Darin Adler  <darin@apple.com>
    216
  • trunk/JavaScriptCore/kjs/JSGlobalObject.cpp

    r29438 r29443  
    9191JSGlobalObject* JSGlobalObject::s_head = 0;
    9292
     93void JSGlobalObject::deleteActivationStack()
     94{
     95    ActivationStackNode* prevNode = 0;
     96    for (ActivationStackNode* currentNode = d()->activations; currentNode; currentNode = prevNode) {
     97        prevNode = currentNode->prev;
     98        delete currentNode;
     99    }
     100}
     101
    93102JSGlobalObject::~JSGlobalObject()
    94103{
     
    103112    if (s_head == this)
    104113        s_head = 0;
     114   
     115    deleteActivationStack();
    105116   
    106117    delete d();
     
    128139    d()->recursion = 0;
    129140    d()->debugger = 0;
     141   
     142    d()->activations = 0;
    130143   
    131144    reset(prototype());
     
    203216    ExecState* exec = &d()->globalExec;
    204217
    205     d()->activations = new ActivationStackNode;
     218    deleteActivationStack();
     219    ActivationStackNode* newStackNode = new ActivationStackNode;
     220    newStackNode->prev = 0;   
     221    d()->activations = newStackNode;
    206222    d()->activationCount = 0;
    207223
  • trunk/JavaScriptCore/kjs/JSGlobalObject.h

    r29438 r29443  
    245245        void resetTimeoutCheck();
    246246
     247        void deleteActivationStack();
    247248        void checkActivationCount();
    248249
Note: See TracChangeset for help on using the changeset viewer.