diff -r acabd3f035fe Lib/test/test_xml_etree.py --- a/Lib/test/test_xml_etree.py Wed Nov 27 14:42:55 2013 -0800 +++ b/Lib/test/test_xml_etree.py Thu Nov 28 15:14:51 2013 +0800 @@ -1035,6 +1035,11 @@ self.assertEqual(list(parser.read_events()), [('end-ns', None)]) self.assertIsNone(parser.close()) + def test_ns_events_with_empty_namespace(self): + parser = ET.XMLPullParser(events=('start-ns', 'end-ns')) + self._feed(parser, "\n") + self.assertEqual(list(parser.read_events()), []) + def test_events(self): parser = ET.XMLPullParser(events=()) self._feed(parser, "\n") diff -r acabd3f035fe Modules/_elementtree.c --- a/Modules/_elementtree.c Wed Nov 27 14:42:55 2013 -0800 +++ b/Modules/_elementtree.c Thu Nov 28 15:14:51 2013 +0800 @@ -3038,7 +3038,10 @@ if (PyErr_Occurred()) return; - suri = PyUnicode_DecodeUTF8(uri, strlen(uri), "strict"); + if (uri) + suri = PyUnicode_DecodeUTF8(uri, strlen(uri), "strict"); + else + sprefix = PyUnicode_FromString(""); if (!suri) return;