Ignore:
Timestamp:
Jan 12, 2008, 6:06:33 AM (17 years ago)
Author:
[email protected]
Message:

2008-01-12 Cameron Zwarich <[email protected]>

Reviewed by Mark Rowe.

Fixes leaking of ActivationStackNode objects.

  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::deleteActivationStack): (KJS::JSGlobalObject::~JSGlobalObject): (KJS::JSGlobalObject::init): (KJS::JSGlobalObject::reset):
  • kjs/JSGlobalObject.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/JSGlobalObject.cpp

    r29425 r29435  
    9191JSGlobalObject* JSGlobalObject::s_head = 0;
    9292
     93void JSGlobalObject::deleteActivationStack()
     94{
     95    for (ActivationStackNode* currentNode = d()->activations; currentNode; currentNode = currentNode->prev)
     96        delete currentNode;
     97}
     98
    9399JSGlobalObject::~JSGlobalObject()
    94100{
     
    103109    if (s_head == this)
    104110        s_head = 0;
     111   
     112    deleteActivationStack();
    105113   
    106114    delete d();
     
    128136    d()->recursion = 0;
    129137    d()->debugger = 0;
     138   
     139    d()->activations = 0;
    130140   
    131141    reset(prototype());
     
    203213    ExecState* exec = &d()->globalExec;
    204214
    205     d()->activations = new ActivationStackNode;
     215    deleteActivationStack();
     216   
     217    ActivationStackNode* newStackNode = new ActivationStackNode;
     218    newStackNode->prev = 0;   
     219    d()->activations = newStackNode;
    206220    d()->activationCount = 0;
    207221
Note: See TracChangeset for help on using the changeset viewer.