[Python-checkins] cpython: Issue #14168: Check for presence of _attrs before accessing it.

martin.v.loewis python-checkins at python.org
Mon Mar 5 07:01:57 CET 2012


http://hg.python.org/cpython/rev/73c76466cf44
changeset: 75407:73c76466cf44
user: Martin v. Löwis <martin at v.loewis.de>
date: Mon Mar 05 07:01:49 2012 +0100
summary:
 Issue #14168: Check for presence of _attrs before accessing it.
files:
 Lib/test/test_minidom.py | 15 ++++++++++++---
 Lib/xml/dom/minidom.py | 4 ++++
 Misc/NEWS | 2 ++
 3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py
--- a/Lib/test/test_minidom.py
+++ b/Lib/test/test_minidom.py
@@ -362,11 +362,17 @@
 def testGetAttrList(self):
 pass
 
- def testGetAttrValues(self): pass
+ def testGetAttrValues(self):
+ pass
 
- def testGetAttrLength(self): pass
+ def testGetAttrLength(self):
+ pass
 
- def testGetAttribute(self): pass
+ def testGetAttribute(self):
+ dom = Document()
+ child = dom.appendChild(
+ dom.createElementNS("http://www.python.org", "python:abc"))
+ self.assertEqual(child.getAttribute('missing'), '')
 
 def testGetAttributeNS(self):
 dom = Document()
@@ -378,6 +384,9 @@
 'http://www.python.org')
 self.assertEqual(child.getAttributeNS("http://www.w3.org", "other"),
 '')
+ child2 = child.appendChild(dom.createElement('abc'))
+ self.assertEqual(child2.getAttributeNS("http://www.python.org", "missing"),
+ '')
 
 def testGetAttributeNode(self): pass
 
diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py
--- a/Lib/xml/dom/minidom.py
+++ b/Lib/xml/dom/minidom.py
@@ -723,12 +723,16 @@
 Node.unlink(self)
 
 def getAttribute(self, attname):
+ if self._attrs is None:
+ return ""
 try:
 return self._attrs[attname].value
 except KeyError:
 return ""
 
 def getAttributeNS(self, namespaceURI, localName):
+ if self._attrsNS is None:
+ return ""
 try:
 return self._attrsNS[(namespaceURI, localName)].value
 except KeyError:
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -511,6 +511,8 @@
 Library
 -------
 
+- Issue #14168: Check for presence of _attrs before accessing it.
+
 - Issue #14195: An issue that caused weakref.WeakSet instances to incorrectly
 return True for a WeakSet instance 'a' in both 'a < a' and 'a > a' has been
 fixed.
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /