Changeset 14055 in webkit


Ignore:
Timestamp:
Apr 25, 2006 12:33:22 PM (18 years ago)
Author:
eseidel
Message:

2006-04-25 Eric Seidel <eseidel@apple.com>

Reviewed by ggaren.

Fixes for our 3rd and 5th most common crashtracers:
<rdar://problem/4233435> CrashTracer: 2698 crashes in Safari at com.apple.WebCore: khtml::RenderBlock::addChildToFlow + 156
<rdar://problem/4129744> [REGRESSION]CrashTracer: ..400 crashes at com.apple.WebCore: DOM::NodeImpl::createRendererIfNeeded + 44

Test case landed on trunk but not on branch.

  • khtml/xml/dom_docimpl.cpp: (DocumentImpl::setFocusNode): use m_inDetach bool copied from trunk
  • khtml/xml/dom_nodeimpl.cpp: (NodeImpl::NodeImpl): (NodeImpl::detach): set m_inDetach (NodeImpl::createRendererIfNeeded): (NodeBaseImpl::removeChildren): remove node from tree before calling detach.
  • khtml/xml/dom_nodeimpl.h:
Location:
branches/Safari-2-0-branch/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/Safari-2-0-branch/WebCore/ChangeLog

    r14053 r14055  
     12006-04-25  Eric Seidel  <eseidel@apple.com>
     2
     3        Reviewed by ggaren.
     4
     5        Fixes for our 3rd and 5th most common crashtracers:
     6        <rdar://problem/4233435> CrashTracer: 2698 crashes in Safari at com.apple.WebCore: khtml::RenderBlock::addChildToFlow + 156
     7        <rdar://problem/4129744> [REGRESSION]CrashTracer: ..400 crashes at com.apple.WebCore: DOM::NodeImpl::createRendererIfNeeded + 44
     8
     9        Test case landed on trunk but not on branch.
     10
     11        * khtml/xml/dom_docimpl.cpp:
     12        (DocumentImpl::setFocusNode): use m_inDetach bool copied from trunk
     13        * khtml/xml/dom_nodeimpl.cpp:
     14        (NodeImpl::NodeImpl):
     15        (NodeImpl::detach): set m_inDetach
     16        (NodeImpl::createRendererIfNeeded):
     17        (NodeBaseImpl::removeChildren): remove node from tree before calling detach.
     18        * khtml/xml/dom_nodeimpl.h:
     19
    1202006-04-25  Timothy Hatcher  <timothy@apple.com>
    221
  • branches/Safari-2-0-branch/WebCore/khtml/xml/dom_docimpl.cpp

    r13094 r14055  
    25942594
    25952595    // Remove focus from the existing focus node (if any)
    2596     if (oldFocusNode) {
     2596    if (oldFocusNode && !oldFocusNode->m_inDetach) {
    25972597        // This goes hand in hand with the Qt focus setting below.
    25982598        if (!newFocusNode && view()) {
  • branches/Safari-2-0-branch/WebCore/khtml/xml/dom_nodeimpl.cpp

    • Property allow-tabs set to 1
    r12185 r14055  
    101101      m_inActiveChain( false ),
    102102      m_styleElement( false ),
    103       m_implicit( false )
     103      m_implicit(false),
     104      m_inDetach(false)
    104105{
    105106    if (document)
     
    12021203void NodeImpl::detach()
    12031204{
     1205    m_inDetach = true;
    12041206//    assert(m_attached);
    12051207
     
    12121214        doc->incDOMTreeVersion();
    12131215    m_attached = false;
     1216    m_inDetach = false;
    12141217}
    12151218
     
    13791382    assert(!m_render);
    13801383   
    1381     NodeImpl *parent = parentNode();   
     1384    NodeImpl *parent = parentNode();
    13821385    assert(parent);
    13831386   
     
    19411944       
    19421945        n->ref();
    1943 
    1944         if (n->attached())
    1945             n->detach();
     1946       
     1947        // Remove the node from the tree before calling detach or removedFromDocument (4427024, 4129744)
    19461948        n->setPreviousSibling(0);
    19471949        n->setNextSibling(0);
    19481950        n->setParent(0);
     1951        _first = next;
     1952        if (n == _last)
     1953            _last = 0;
     1954
     1955        if (n->attached())
     1956            n->detach();
    19491957       
    19501958        if (n->inDocument())
     
    19521960
    19531961        n->deref();
    1954 
    1955         _first = next;
    1956     }
    1957     _last = 0;
     1962    }
    19581963    allowEventDispatch();
    19591964   
  • branches/Safari-2-0-branch/WebCore/khtml/xml/dom_nodeimpl.h

    r12185 r14055  
    502502    bool m_styleElement : 1; // contains stylesheet text
    503503    bool m_implicit : 1; // implicitely generated by the parser
    504 
    505     // 3 bits unused
     504   
     505    bool m_inDetach : 1;
     506
     507    // 2 bits unused
    506508};
    507509
Note: See TracChangeset for help on using the changeset viewer.