diff -r 31784350f849 Modules/getpath.c --- a/Modules/getpath.c Wed Feb 22 21:22:20 2012 +0100 +++ b/Modules/getpath.c Thu Feb 23 00:11:37 2012 +0100 @@ -253,11 +253,21 @@ static void absolutize(wchar_t *path) { wchar_t buffer[MAXPATHLEN+1]; +#ifdef HAVE_REALPATH + wchar_t *ret; +#endif if (path[0] == SEP) return; - copy_absolute(buffer, path, MAXPATHLEN+1); +#ifdef HAVE_REALPATH + ret = _Py_wrealpath(path, buffer, Py_ARRAY_LENGTH(buffer)); + if (ret == NULL) + copy_absolute(buffer, path, Py_ARRAY_LENGTH(buffer)); wcscpy(path, buffer); +#else + copy_absolute(buffer, path, Py_ARRAY_LENGTH(buffer)); + wcscpy(path, buffer); +#endif } /* search_for_prefix requires that argv0_path be no more than MAXPATHLEN @@ -502,7 +512,7 @@ calculate_path(void) progpath[0] = '\0'; if (path_buffer != NULL) PyMem_Free(path_buffer); - if (progpath[0] != SEP && progpath[0] != '\0') + if (progpath[0] != '\0') absolutize(progpath); wcsncpy(argv0_path, progpath, MAXPATHLEN); argv0_path[MAXPATHLEN] = '\0'; diff -r 31784350f849 Python/sysmodule.c --- a/Python/sysmodule.c Wed Feb 22 21:22:20 2012 +0100 +++ b/Python/sysmodule.c Thu Feb 23 00:11:37 2012 +0100 @@ -1795,7 +1795,7 @@ sys_update_path(int argc, wchar_t **argv #else /* All other filename syntaxes */ if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) { #if defined(HAVE_REALPATH) - if (_Py_wrealpath(argv0, fullpath, PATH_MAX)) { + if (_Py_wrealpath(argv0, fullpath, Py_ARRAY_LENGTH(fullpath))) { argv0 = fullpath; } #endif