summaryrefslogtreecommitdiffstats
path: root/Python/fileutils.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/fileutils.c')
-rw-r--r--Python/fileutils.c51
1 files changed, 26 insertions, 25 deletions
diff --git a/Python/fileutils.c b/Python/fileutils.c
index c9ae1b3..9529b14 100644
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -2506,37 +2506,38 @@ _Py_normpath_and_size(wchar_t *path, Py_ssize_t size, Py_ssize_t *normsize)
#endif
#define SEP_OR_END(x) (IS_SEP(x) || IS_END(x))
- if (p1[0] == L'.' && IS_SEP(&p1[1])) {
- // Skip leading '.\'
- path = &path[2];
- while (IS_SEP(path)) {
- path++;
- }
- p1 = p2 = minP2 = path;
- lastC = SEP;
- }
- else {
- Py_ssize_t drvsize, rootsize;
- _Py_skiproot(path, size, &drvsize, &rootsize);
- if (drvsize || rootsize) {
- // Skip past root and update minP2
- p1 = &path[drvsize + rootsize];
+ Py_ssize_t drvsize, rootsize;
+ _Py_skiproot(path, size, &drvsize, &rootsize);
+ if (drvsize || rootsize) {
+ // Skip past root and update minP2
+ p1 = &path[drvsize + rootsize];
#ifndef ALTSEP
- p2 = p1;
+ p2 = p1;
#else
- for (; p2 < p1; ++p2) {
- if (*p2 == ALTSEP) {
- *p2 = SEP;
- }
+ for (; p2 < p1; ++p2) {
+ if (*p2 == ALTSEP) {
+ *p2 = SEP;
}
+ }
#endif
- minP2 = p2 - 1;
- lastC = *minP2;
+ minP2 = p2 - 1;
+ lastC = *minP2;
#ifdef MS_WINDOWS
- if (lastC != SEP) {
- minP2++;
- }
+ if (lastC != SEP) {
+ minP2++;
+ }
+#endif
+ }
+ if (p1[0] == L'.' && SEP_OR_END(&p1[1])) {
+ // Skip leading '.\'
+ lastC = *++p1;
+#ifdef ALTSEP
+ if (lastC == ALTSEP) {
+ lastC = SEP;
+ }
#endif
+ while (IS_SEP(p1)) {
+ p1++;
}
}