diff options
Diffstat (limited to 'Modules/getpath.c')
-rw-r--r-- | Modules/getpath.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/Modules/getpath.c b/Modules/getpath.c index 2275c84738..776c4645f5 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -407,7 +407,6 @@ calculate_path(void) wchar_t rtpypath[MAXPATHLEN+1]; wchar_t *home = Py_GetPythonHome(); char *_path = getenv("PATH"); - wchar_t wpath[MAXPATHLEN+1]; wchar_t *path = NULL; wchar_t *prog = Py_GetProgramName(); wchar_t argv0_path[MAXPATHLEN+1]; @@ -429,14 +428,8 @@ calculate_path(void) char execpath[MAXPATHLEN+1]; #endif - if (_path) { - size_t r = mbstowcs(wpath, _path, MAXPATHLEN+1); - path = wpath; - if (r == (size_t)-1 || r > MAXPATHLEN) { - /* Could not convert PATH, or it's too long. */ - path = NULL; - } - } + if (_path) + path = _Py_char2wchar(_path, NULL); /* If there is no slash in the argv0 path, then we have to * assume python is on the user's $PATH, since there's no @@ -491,6 +484,8 @@ calculate_path(void) } else progpath[0] = '\0'; + if (path != NULL) + PyMem_Free(path); if (progpath[0] != SEP && progpath[0] != '\0') absolutize(progpath); wcsncpy(argv0_path, progpath, MAXPATHLEN); |