@@ -3000,6 +3000,7 @@ PyInit__elementtree(void)
30003000 " self._file = file\n"
30013001 " self._events = []\n"
30023002 " self._index = 0\n"
3003+ " self._error = None\n"
30033004 " self.root = self._root = None\n"
30043005 " b = cElementTree.TreeBuilder()\n"
30053006 " self._parser = cElementTree.XMLParser(b)\n"
@@ -3008,24 +3009,31 @@ PyInit__elementtree(void)
30083009 " while 1:\n"
30093010 " try:\n"
30103011 " item = self._events[self._index]\n"
3012+ " self._index += 1\n"
3013+ " return item\n"
30113014 " except IndexError:\n"
3012- " if self._parser is None:\n"
3013- " self.root = self._root\n"
3014- " if self._close_file:\n"
3015- " self._file.close()\n"
3016- " raise StopIteration\n"
3017- " # load event buffer\n"
3018- " del self._events[:]\n"
3019- " self._index = 0\n"
3020- " data = self._file.read(16384)\n"
3021- " if data:\n"
3015+ " pass\n"
3016+ " if self._error:\n"
3017+ " e = self._error\n"
3018+ " self._error = None\n"
3019+ " raise e\n"
3020+ " if self._parser is None:\n"
3021+ " self.root = self._root\n"
3022+ " if self._close_file:\n"
3023+ " self._file.close()\n"
3024+ " raise StopIteration\n"
3025+ " # load event buffer\n"
3026+ " del self._events[:]\n"
3027+ " self._index = 0\n"
3028+ " data = self._file.read(16384)\n"
3029+ " if data:\n"
3030+ " try:\n"
30223031 " self._parser.feed(data)\n"
3023- " else:\n"
3024- " self._root = self._parser.close()\n"
3025- " self._parser = None\n"
3032+ " except SyntaxError as exc:\n"
3033+ " self._error = exc\n"
30263034 " else:\n"
3027- " self._index = self._index + 1 \n"
3028- " return item \n"
3035+ " self._root = self._parser.close() \n"
3036+ " self._parser = None \n"
30293037 " def __iter__(self):\n"
30303038 " return self\n"
30313039 "cElementTree.iterparse = iterparse\n"
0 commit comments