Commit 841d25ee authored by Andrew M. Kuchling's avatar Andrew M. Kuchling

[Patch #1094164] replaceChild(x,x) ends up removing x of the tree. Add fix...

[Patch #1094164] replaceChild(x,x) ends up removing x of the tree.  Add fix from Felix Rabe and a test case
parent bb7e8005
......@@ -1127,6 +1127,17 @@ def testWholeText():
checkWholeText(text, "cabd")
checkWholeText(text2, "cabd")
def testPatch1094164 ():
doc = parseString("<doc><e/></doc>")
elem = doc.documentElement
e = elem.firstChild
confirm(e.parentNode is elem, "Before replaceChild()")
# Check that replacing a child with itself leaves the tree unchanged
elem.replaceChild(e, e)
confirm(e.parentNode is elem, "After replaceChild()")
def testReplaceWholeText():
def setup():
doc = parseString("<doc>a<e/>d</doc>")
......
......@@ -135,10 +135,10 @@ class Node(xml.dom.Node, GetattrMagic):
if newChild.nodeType not in self._child_node_types:
raise xml.dom.HierarchyRequestErr(
"%s cannot be child of %s" % (repr(newChild), repr(self)))
if newChild.parentNode is not None:
newChild.parentNode.removeChild(newChild)
if newChild is oldChild:
return
if newChild.parentNode is not None:
newChild.parentNode.removeChild(newChild)
try:
index = self.childNodes.index(oldChild)
except ValueError:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment