Changeset 27831 in webkit for trunk/JavaScriptCore/kjs/nodes.h


Ignore:
Timestamp:
Nov 15, 2007, 4:40:24 PM (18 years ago)
Author:
[email protected]
Message:

<rdar://problem/5601548> REGRESSION: All SourceElements and their children leak after a syntax error

Reviewed by Darin.

Add a stub node to maintain the Vector of SourceElements until assignment.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/nodes.h

    r27749 r27831  
    17291729  typedef Vector<RefPtr<StatementNode> > SourceElements;
    17301730
     1731  class SourceElementsStub : public Node {
     1732  public:
     1733    SourceElementsStub()
     1734      : m_sourceElements(new SourceElements)
     1735      {}
     1736    void append(StatementNode* element) { m_sourceElements->append(element); }
     1737    SourceElements* release() {
     1738        SourceElements* elems = m_sourceElements.release();
     1739        return elems;
     1740    }
     1741    virtual void optimizeVariableAccess(FunctionBodyNode*, DeclarationStacks::NodeStack&) KJS_FAST_CALL { ASSERT_NOT_REACHED(); }
     1742    virtual Completion execute(ExecState*) KJS_FAST_CALL  { ASSERT_NOT_REACHED(); return Completion(); }
     1743    virtual void streamTo(SourceStream&) const KJS_FAST_CALL  { ASSERT_NOT_REACHED(); }
     1744    virtual void getDeclarations(DeclarationStacks&) KJS_FAST_CALL  { ASSERT_NOT_REACHED(); }
     1745    virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
     1746  private:
     1747    OwnPtr<SourceElements> m_sourceElements;
     1748  };
     1749   
    17311750  class BlockNode : public StatementNode {
    17321751  public:
Note: See TracChangeset for help on using the changeset viewer.