@@ -3016,6 +3016,7 @@ PyInit__elementtree(void)
30163016 " self._file = file\n"
30173017 " self._events = []\n"
30183018 " self._index = 0\n"
3019+ " self._error = None\n"
30193020 " self.root = self._root = None\n"
30203021 " b = cElementTree.TreeBuilder()\n"
30213022 " self._parser = cElementTree.XMLParser(b)\n"
@@ -3024,24 +3025,31 @@ PyInit__elementtree(void)
30243025 " while 1:\n"
30253026 " try:\n"
30263027 " item = self._events[self._index]\n"
3028+ " self._index += 1\n"
3029+ " return item\n"
30273030 " except IndexError:\n"
3028- " if self._parser is None:\n"
3029- " self.root = self._root\n"
3030- " if self._close_file:\n"
3031- " self._file.close()\n"
3032- " raise StopIteration\n"
3033- " # load event buffer\n"
3034- " del self._events[:]\n"
3035- " self._index = 0\n"
3036- " data = self._file.read(16384)\n"
3037- " if data:\n"
3031+ " pass\n"
3032+ " if self._error:\n"
3033+ " e = self._error\n"
3034+ " self._error = None\n"
3035+ " raise e\n"
3036+ " if self._parser is None:\n"
3037+ " self.root = self._root\n"
3038+ " if self._close_file:\n"
3039+ " self._file.close()\n"
3040+ " raise StopIteration\n"
3041+ " # load event buffer\n"
3042+ " del self._events[:]\n"
3043+ " self._index = 0\n"
3044+ " data = self._file.read(16384)\n"
3045+ " if data:\n"
3046+ " try:\n"
30383047 " self._parser.feed(data)\n"
3039- " else:\n"
3040- " self._root = self._parser.close()\n"
3041- " self._parser = None\n"
3048+ " except SyntaxError as exc:\n"
3049+ " self._error = exc\n"
30423050 " else:\n"
3043- " self._index = self._index + 1 \n"
3044- " return item \n"
3051+ " self._root = self._parser.close() \n"
3052+ " self._parser = None \n"
30453053 " def __iter__(self):\n"
30463054 " return self\n"
30473055 "cElementTree.iterparse = iterparse\n"
0 commit comments