Changeset 15860 in webkit


Ignore:
Timestamp:
Aug 14, 2006 1:17:32 PM (18 years ago)
Author:
thatcher
Message:

Merged fix from Safari-2-0-branch to Safari-1-3-branch

2006-08-04 Beth Dakin <Beth Dakin>

Reviewed by me/Hyatt.

Mostly this is merging over Hyatt's fix with r15801. Some other
things needed to be tweaked though. This is a better fix for
<rdar://problem/4541255> Safari hangs at http://www.kutilek.de/
safari-test/ somewhere from
WebCore::RenderBlock::layoutInlineChildren(bool)

  • khtml/rendering/render_box.cpp: (RenderBox::deleteLineBoxWrapper): Call remove.
  • khtml/rendering/render_box.h:
  • khtml/rendering/render_list.cpp: (RenderListItem::updateMarkerLocation): Call remove.
  • khtml/rendering/render_list.h: (khtml::ListMarkerBox:::InlineBox):
  • khtml/rendering/render_object.cpp: Back out old fix. (RenderObject::remove):
  • khtml/rendering/render_object.h: Back out old fix.
Location:
branches/Safari-1-3-branch/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/Safari-1-3-branch/WebCore/ChangeLog

    r15858 r15860  
     12006-08-14  Timothy Hatcher  <timothy@apple.com>
     2
     3        Merged fix from Safari-2-0-branch to Safari-1-3-branch
     4
     5    2006-08-04  Beth Dakin  <bdakin@apple.com>
     6
     7        Reviewed by me/Hyatt.
     8
     9        Mostly this is merging over Hyatt's fix with r15801. Some other
     10        things needed to be tweaked though. This is a better fix for
     11        <rdar://problem/4541255> Safari hangs at http://www.kutilek.de/
     12        safari-test/ somewhere from
     13        WebCore::RenderBlock::layoutInlineChildren(bool)
     14
     15        * khtml/rendering/render_box.cpp:
     16        (RenderBox::deleteLineBoxWrapper): Call remove.
     17        * khtml/rendering/render_box.h:
     18        * khtml/rendering/render_list.cpp:
     19        (RenderListItem::updateMarkerLocation): Call remove.
     20        * khtml/rendering/render_list.h:
     21        (khtml::ListMarkerBox:::InlineBox):
     22        * khtml/rendering/render_object.cpp: Back out old fix.
     23        (RenderObject::remove):
     24        * khtml/rendering/render_object.h: Back out old fix.
     25
    1262006-08-14  Timothy Hatcher  <timothy@apple.com>
    227
  • branches/Safari-1-3-branch/WebCore/khtml/rendering/render_box.cpp

    • Property allow-tabs set to 1
    r11166 r15860  
    670670void RenderBox::deleteLineBoxWrapper()
    671671{
    672     if (m_inlineBoxWrapper)
     672    if (m_inlineBoxWrapper) {
     673        if (!documentBeingDestroyed())
     674            m_inlineBoxWrapper->remove();
    673675        m_inlineBoxWrapper->detach(renderArena());
    674     m_inlineBoxWrapper = 0;
     676        m_inlineBoxWrapper = 0;
     677    }
    675678}
    676679
  • branches/Safari-1-3-branch/WebCore/khtml/rendering/render_box.h

    r11166 r15860  
    9999    virtual InlineBox* inlineBoxWrapper() const;
    100100    virtual void setInlineBoxWrapper(InlineBox* b);
    101     void deleteLineBoxWrapper();
     101    virtual void deleteLineBoxWrapper();
    102102   
    103103    virtual int lowestPosition(bool includeOverflowInterior=true, bool includeSelf=true) const;
  • branches/Safari-1-3-branch/WebCore/khtml/rendering/render_list.cpp

    r15858 r15860  
    244244        if (markerPar != lineBoxParent)
    245245        {
    246             if (markerPar)
    247                 markerPar->removeChild(m_marker);
     246            m_marker->remove();
    248247            if (!lineBoxParent)
    249248                lineBoxParent = this;
     
    311310    }
    312311    return result;
    313 }
    314 
    315 // -----------------------------------------------------------
    316 #ifndef NDEBUG
    317 static bool listMarkerBoxDetach;
    318 #endif
    319  
    320 void ListMarkerBox::detach(RenderArena* arena)
    321 {
    322     #ifndef NDEBUG
    323         listMarkerBoxDetach = true;
    324     #endif
    325     if (m_parent)
    326         m_parent->removeChild(this);
    327     delete this;
    328     #ifndef NDEBUG
    329         listMarkerBoxDetach = false;
    330     #endif
    331 
    332     // Recover the size left there for us by operator delete and free the memory.
    333     arena->free(*(size_t *)this, this);
    334 }
    335 
    336 void ListMarkerBox::operator delete(void* ptr, size_t sz)
    337 {
    338     assert(listMarkerBoxDetach);
    339 
    340     // Stash size where destroy can find it.
    341     *(size_t *)ptr = sz;
    342312}
    343313
  • branches/Safari-1-3-branch/WebCore/khtml/rendering/render_list.h

    r15858 r15860  
    8787public:
    8888    ListMarkerBox(RenderObject* obj) :InlineBox(obj) {}
    89     virtual void detach(RenderArena*);
    90    
    91     // Overridden to prevent the normal delete from being called.
    92     void operator delete(void* ptr, size_t sz);
    93    
    9489    virtual bool isText() const { return !static_cast<RenderListMarker*>(object())->listImage(); }
    9590};
  • branches/Safari-1-3-branch/WebCore/khtml/rendering/render_object.cpp

    • Property allow-tabs set to 1
    r11252 r15860  
    18341834        //have parent, take care of the tree integrity
    18351835        parent()->removeChild(this);
     1836       
     1837    deleteLineBoxWrapper();
    18361838}
    18371839
  • branches/Safari-1-3-branch/WebCore/khtml/rendering/render_object.h

    • Property allow-tabs set to 1
    r11252 r15860  
    374374    virtual InlineBox* inlineBoxWrapper() const;
    375375    virtual void setInlineBoxWrapper(InlineBox* b);
    376     void deleteLineBoxWrapper();
     376    virtual void deleteLineBoxWrapper();
    377377
    378378    virtual InlineBox *inlineBox(long offset=0, EAffinity affinity = UPSTREAM);
Note: See TracChangeset for help on using the changeset viewer.