]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #24125: Saved error's line and column numbers when an error is occured
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 6 May 2015 06:38:22 +0000 (09:38 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Wed, 6 May 2015 06:38:22 +0000 (09:38 +0300)
during closing expatreader.  Fixed a regression introduced in issue #23865.

1  2 
Lib/test/test_sax.py
Lib/xml/sax/expatreader.py

Simple merge
index 1795b23af60a76c79b22f0c9e040c66a4cbcefc0,3b63737457d4161d1ae9eb95d9064b44f058c738..98b5ca953983c707f5497de896399a7e004931e8
@@@ -220,15 -224,17 +224,22 @@@ class ExpatParser(xmlreader.Incremental
              self._parsing = 0
              # break cycle created by expat handlers pointing to our methods
              self._parser = None
 -            bs = self._source.getByteStream()
 -            if bs is not None:
 -                bs.close()
+         finally:
+             self._parsing = 0
+             if self._parser is not None:
+                 # Keep ErrorColumnNumber and ErrorLineNumber after closing.
+                 parser = _ClosedParser()
+                 parser.ErrorColumnNumber = self._parser.ErrorColumnNumber
+                 parser.ErrorLineNumber = self._parser.ErrorLineNumber
+                 self._parser = parser
 +            try:
 +                file = self._source.getCharacterStream()
 +                if file is not None:
 +                    file.close()
 +            finally:
 +                file = self._source.getByteStream()
 +                if file is not None:
 +                    file.close()
  
      def _reset_cont_handler(self):
          self._parser.ProcessingInstructionHandler = \