[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

kocienda kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:41:28 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit fd7036a38720eae2a537b383c027be7e71d2e050
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon May 24 20:40:30 2004 +0000

            Reviewed by John
    
            Fixed some life-cycle issues with node iterators and detaching. Big deal is
            to detach in DOMNodeIterator dealloc. Otherwise, NodeIterators created from
            obj-c leak.
    
            * khtml/xml/dom2_traversalimpl.cpp:
            (DOM::NodeIteratorImpl::detach): Only detach if not yet detached.
            * khtml/xml/dom2_traversalimpl.h:
            (DOM::NodeIteratorImpl::setDetached): New convenience.
            * kwq/DOM.mm:
            (-[DOMNodeIterator dealloc]): Detach here, if not yet detached; fixes leak.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6674 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index db572e5..761f089 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,5 +1,20 @@
 2004-05-24  Ken Kocienda  <kocienda at apple.com>
 
+        Reviewed by John
+        
+        Fixed some life-cycle issues with node iterators and detaching. Big deal is
+        to detach in DOMNodeIterator dealloc. Otherwise, NodeIterators created from
+        obj-c leak.
+
+        * khtml/xml/dom2_traversalimpl.cpp:
+        (DOM::NodeIteratorImpl::detach): Only detach if not yet detached.
+        * khtml/xml/dom2_traversalimpl.h:
+        (DOM::NodeIteratorImpl::setDetached): New convenience.
+        * kwq/DOM.mm:
+        (-[DOMNodeIterator dealloc]): Detach here, if not yet detached; fixes leak.
+
+2004-05-24  Ken Kocienda  <kocienda at apple.com>
+
         Reviewed by Hyatt
 
         * khtml/css/css_computedstyle.cpp:
diff --git a/WebCore/khtml/xml/dom2_traversalimpl.cpp b/WebCore/khtml/xml/dom2_traversalimpl.cpp
index 601e15b..f01228b 100644
--- a/WebCore/khtml/xml/dom2_traversalimpl.cpp
+++ b/WebCore/khtml/xml/dom2_traversalimpl.cpp
@@ -306,9 +306,9 @@ NodeImpl *NodeIteratorImpl::previousNode(int &exceptioncode)
 
 void NodeIteratorImpl::detach(int &/*exceptioncode*/)
 {
-    if (document())
+    if (!detached() && document())
         document()->detachNodeIterator(this);
-    m_detached = true;
+    setDetached();
 }
 
 void NodeIteratorImpl::setReferenceNode(NodeImpl *node)
diff --git a/WebCore/khtml/xml/dom2_traversalimpl.h b/WebCore/khtml/xml/dom2_traversalimpl.h
index 2350e60..7d3db19 100644
--- a/WebCore/khtml/xml/dom2_traversalimpl.h
+++ b/WebCore/khtml/xml/dom2_traversalimpl.h
@@ -109,6 +109,7 @@ private:
     void setReferenceNode(NodeImpl *);
     void setPointerBeforeReferenceNode(bool flag=true) { m_beforeReferenceNode = flag; }
     bool detached() const { return m_detached; }
+    void setDetached(bool flag=true) { m_detached = flag; }
     DocumentImpl * document() const { return m_doc; }
     void setDocument(DocumentImpl *);
 
diff --git a/WebCore/kwq/DOM.mm b/WebCore/kwq/DOM.mm
index f7b3554..6372431 100644
--- a/WebCore/kwq/DOM.mm
+++ b/WebCore/kwq/DOM.mm
@@ -1942,8 +1942,10 @@ inline Document DocumentImpl::createInstance(DocumentImpl *impl)
 {
     if (m_filter)
         [m_filter release];
-    if (_internal)
+    if (_internal) {
+        [self detach];
         DOM_cast<NodeIteratorImpl *>(_internal)->deref();
+    }
     [super dealloc];
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list