Kaydet (Commit) c3636449 authored tarafından Martin Panter's avatar Martin Panter

Issue #21313: Tolerate truncated buildinfo in sys.version

üst 05837ece
...@@ -1314,9 +1314,11 @@ def processor(): ...@@ -1314,9 +1314,11 @@ def processor():
### Various APIs for extracting information from sys.version ### Various APIs for extracting information from sys.version
_sys_version_parser = re.compile( _sys_version_parser = re.compile(
r'([\w.+]+)\s*' r'([\w.+]+)\s*' # "version<space>"
'\(#?([^,]+),\s*([\w ]+),\s*([\w :]+)\)\s*' r'\(#?([^,]+)' # "(#buildno"
'\[([^\]]+)\]?') r'(?:,\s*([\w ]*)' # ", builddate"
r'(?:,\s*([\w :]*))?)?\)\s*' # ", buildtime)<space>"
r'\[([^\]]+)\]?') # "[compiler]"
_ironpython_sys_version_parser = re.compile( _ironpython_sys_version_parser = re.compile(
r'IronPython\s*' r'IronPython\s*'
...@@ -1395,6 +1397,8 @@ def _sys_version(sys_version=None): ...@@ -1395,6 +1397,8 @@ def _sys_version(sys_version=None):
'failed to parse Jython sys.version: %s' % 'failed to parse Jython sys.version: %s' %
repr(sys_version)) repr(sys_version))
version, buildno, builddate, buildtime, _ = match.groups() version, buildno, builddate, buildtime, _ = match.groups()
if builddate is None:
builddate = ''
compiler = sys.platform compiler = sys.platform
elif "PyPy" in sys_version: elif "PyPy" in sys_version:
...@@ -1417,7 +1421,10 @@ def _sys_version(sys_version=None): ...@@ -1417,7 +1421,10 @@ def _sys_version(sys_version=None):
version, buildno, builddate, buildtime, compiler = \ version, buildno, builddate, buildtime, compiler = \
match.groups() match.groups()
name = 'CPython' name = 'CPython'
builddate = builddate + ' ' + buildtime if builddate is None:
builddate = ''
elif buildtime:
builddate = builddate + ' ' + buildtime
if hasattr(sys, 'subversion'): if hasattr(sys, 'subversion'):
# sys.subversion was added in Python 2.5 # sys.subversion was added in Python 2.5
......
...@@ -67,6 +67,22 @@ class PlatformTest(unittest.TestCase): ...@@ -67,6 +67,22 @@ class PlatformTest(unittest.TestCase):
('IronPython', '1.0.60816', '', '', '', '', '.NET 2.0.50727.42')), ('IronPython', '1.0.60816', '', '', '', '', '.NET 2.0.50727.42')),
('IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42', ('IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42',
('IronPython', '1.0.0', '', '', '', '', '.NET 2.0.50727.42')), ('IronPython', '1.0.0', '', '', '', '', '.NET 2.0.50727.42')),
('2.4.3 (truncation, date, t) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', 'date t', 'GCC')),
('2.4.3 (truncation, date, ) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', 'date', 'GCC')),
('2.4.3 (truncation, date,) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', 'date', 'GCC')),
('2.4.3 (truncation, date) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', 'date', 'GCC')),
('2.4.3 (truncation, d) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', 'd', 'GCC')),
('2.4.3 (truncation, ) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
('2.4.3 (truncation,) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
('2.4.3 (truncation) \n[GCC]',
('CPython', '2.4.3', '', '', 'truncation', '', 'GCC')),
): ):
# branch and revision are not "parsed", but fetched # branch and revision are not "parsed", but fetched
# from sys.subversion. Ignore them # from sys.subversion. Ignore them
......
...@@ -92,6 +92,9 @@ Core and Builtins ...@@ -92,6 +92,9 @@ Core and Builtins
Library Library
------- -------
- Issue #21313: Fix the "platform" module to tolerate when sys.version
contains truncated build information.
- Issue #27211: Fix possible memory corruption in io.IOBase.readline(). - Issue #27211: Fix possible memory corruption in io.IOBase.readline().
- Issue #27114: Fix SSLContext._load_windows_store_certs fails with - Issue #27114: Fix SSLContext._load_windows_store_certs fails with
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment