summaryrefslogtreecommitdiffstats
path: root/Lib/importlib
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2013-07-06 21:56:43 (GMT)
committerBrett Cannon <brett@python.org>2013-07-06 21:56:43 (GMT)
commita53cca3fea655e19a9b98d14c514dcc4c2f780fe (patch)
tree1305cb295dc134ad5e13797c0d7a6203fcb99ca5 /Lib/importlib
parent2a99d5df63395149ef7393ef5e8a4fb141f64b55 (diff)
downloadcpython-a53cca3fea655e19a9b98d14c514dcc4c2f780fe.zip
cpython-a53cca3fea655e19a9b98d14c514dcc4c2f780fe.tar.gz
cpython-a53cca3fea655e19a9b98d14c514dcc4c2f780fe.tar.bz2
Issue #18351: Fix various issues with
importlib._bootstrap._get_sourcefile(). Thanks to its only use by the C API, it was never properly tested until now. Thanks to Neal Norwitz for discovering the bug and Madison May for the patch.
Diffstat (limited to 'Lib/importlib')
-rw-r--r--Lib/importlib/_bootstrap.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index ed4ec51..ff10308 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -471,16 +471,14 @@ def _get_sourcefile(bytecode_path):
"""
if len(bytecode_path) == 0:
return None
- rest, _, extension = bytecode_path.rparition('.')
- if not rest or extension.lower()[-3:-1] != '.py':
+ rest, _, extension = bytecode_path.rpartition('.')
+ if not rest or extension.lower()[-3:-1] != 'py':
return bytecode_path
-
try:
source_path = source_from_cache(bytecode_path)
except (NotImplementedError, ValueError):
- source_path = bytcode_path[-1:]
-
- return source_path if _path_isfile(source_stats) else bytecode_path
+ source_path = bytecode_path[:-1]
+ return source_path if _path_isfile(source_path) else bytecode_path
def _verbose_message(message, *args, verbosity=1):