Issue #2175: SAX parsers now support a character stream of InputSource object.
diff --git a/Lib/xml/sax/expatreader.py b/Lib/xml/sax/expatreader.py
index a227cda..65ac7e3 100644
--- a/Lib/xml/sax/expatreader.py
+++ b/Lib/xml/sax/expatreader.py
@@ -219,9 +219,14 @@
         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()
+        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 = \