[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