summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_imp.py4
-rw-r--r--Python/import.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py
index d745ae9..83e17d3 100644
--- a/Lib/test/test_imp.py
+++ b/Lib/test/test_imp.py
@@ -210,6 +210,10 @@ class PEP3147Tests(unittest.TestCase):
self.assertEqual(
imp.cache_from_source('/foo/bar/baz/qux.py', True),
'/foo/bar/baz/__pycache__/qux.{}.pyc'.format(self.tag))
+ # Directory with a dot, filename without dot
+ self.assertEqual(
+ imp.cache_from_source('/foo.bar/file', True),
+ '/foo.bar/__pycache__/file{}.pyc'.format(self.tag))
def test_cache_from_source_optimized(self):
# Given the path to a .py file, return the path to its PEP 3147
diff --git a/Python/import.c b/Python/import.c
index 3237ddc..e5cb627 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -943,12 +943,12 @@ make_compiled_pathname(Py_UNICODE *pathname, int debug)
Py_UNICODE_strcat(buf, CACHEDIR_UNICODE);
i += Py_UNICODE_strlen(CACHEDIR_UNICODE) - 1;
buf[i++] = sep;
- buf[i++] = '\0';
+ buf[i] = '\0';
/* Add the base filename, but remove the .py or .pyw extension, since
the tag name must go before the extension.
*/
Py_UNICODE_strcat(buf, pathname + save);
- pos = Py_UNICODE_strrchr(buf, '.');
+ pos = Py_UNICODE_strrchr(buf + i, '.');
if (pos != NULL)
*++pos = '\0';
Py_UNICODE_strcat(buf, PYC_TAG_UNICODE);