From: Steve Dower Date: Wed, 7 Sep 2016 16:31:52 +0000 (-0700) Subject: Issue #27959: Prevent ImportError from escaping codec search function X-Git-Tag: v3.6.0b1~344 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fe8f4c9e87699acfd740dfc38ae5320691598250;p=thirdparty%2FPython%2Fcpython.git Issue #27959: Prevent ImportError from escaping codec search function --- diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py index 9a9b90b00405..ca07881f345f 100644 --- a/Lib/encodings/__init__.py +++ b/Lib/encodings/__init__.py @@ -155,9 +155,13 @@ codecs.register(search_function) if sys.platform == 'win32': def _alias_mbcs(encoding): - import _bootlocale - if encoding == _bootlocale.getpreferredencoding(False): - import encodings.mbcs - return encodings.mbcs.getregentry() + try: + import _bootlocale + if encoding == _bootlocale.getpreferredencoding(False): + import encodings.mbcs + return encodings.mbcs.getregentry() + except ImportError: + # Imports may fail while we are shutting down + pass codecs.register(_alias_mbcs) diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index f9f5d7a7ee8a..c48ec3a23966 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -3230,8 +3230,7 @@ def _to_memoryview(buf): class CTextIOWrapperTest(TextIOWrapperTest): io = io - shutdown_error = ("ImportError: sys.meta_path is None" - if os.name == "nt" else "RuntimeError: could not find io module state") + shutdown_error = "RuntimeError: could not find io module state" def test_initialization(self): r = self.BytesIO(b"\xc3\xa9\n\n")