Skip to content

Commit 4c09d8e

Browse files
committed
just use wchar everywhere
1 parent f073672 commit 4c09d8e

File tree

1 file changed

+9
-23
lines changed

1 file changed

+9
-23
lines changed

Objects/moduleobject.c

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -872,33 +872,19 @@ _Py_module_getattro_impl(PyModuleObject *m, PyObject *name, int suppress)
872872
// Check mod.__name__ in sys.stdlib_module_names
873873
// and os.path.dirname(mod.__spec__.origin) == os.getcwd()
874874
if (origin && is_name_stdlib_module(mod_name)) {
875-
wchar_t cwdbuf[MAXPATHLEN];
875+
wchar_t cwdbuf[MAXPATHLEN], originbuf[MAXPATHLEN];
876876
if(_Py_wgetcwd(cwdbuf, MAXPATHLEN)) {
877-
PyObject *cwd = PyUnicode_FromWideChar(cwdbuf, wcslen(cwdbuf));
878-
if (!cwd) {
877+
int rc = PyUnicode_AsWideChar(origin, originbuf, MAXPATHLEN);
878+
if (rc < 0) {
879879
goto done;
880880
}
881-
const char sep_char = SEP;
882-
PyObject *sep = PyUnicode_FromStringAndSize(&sep_char, 1);
883-
if (!sep) {
884-
Py_DECREF(cwd);
885-
goto done;
886-
}
887-
PyObject *parts = PyUnicode_RPartition(origin, sep);
888-
Py_DECREF(sep);
889-
if (!parts) {
890-
Py_DECREF(cwd);
891-
goto done;
892-
}
893-
int rc = PyUnicode_Compare(cwd, PyTuple_GET_ITEM(parts, 0));
894-
if (rc == -1 && PyErr_Occurred()) {
895-
Py_DECREF(parts);
896-
Py_DECREF(cwd);
897-
goto done;
881+
wchar_t *sep = wcsrchr(originbuf, SEP);
882+
if (sep) {
883+
*sep = L'\0';
884+
if (wcscmp(cwdbuf, originbuf) == 0) {
885+
is_script_shadowing_stdlib = 1;
886+
}
898887
}
899-
is_script_shadowing_stdlib = rc == 0;
900-
Py_DECREF(parts);
901-
Py_DECREF(cwd);
902888
}
903889
}
904890

0 commit comments

Comments
 (0)