]> granicus.if.org Git - python/commitdiff
Oops, fix my previous commit (r85583) on calculate_path()
authorVictor Stinner <victor.stinner@haypocalc.com>
Sat, 16 Oct 2010 23:38:07 +0000 (23:38 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Sat, 16 Oct 2010 23:38:07 +0000 (23:38 +0000)
path value may be changed, so keep a copy in a new variable.

Modules/getpath.c

index 776c4645f59eb0bb1c3eba82a820ffa1fad0149e..20030cecc6e4abe368746c1d88dfd48174e1a6b1 100644 (file)
@@ -407,6 +407,7 @@ calculate_path(void)
     wchar_t rtpypath[MAXPATHLEN+1];
     wchar_t *home = Py_GetPythonHome();
     char *_path = getenv("PATH");
+    wchar_t *path_buffer = NULL;
     wchar_t *path = NULL;
     wchar_t *prog = Py_GetProgramName();
     wchar_t argv0_path[MAXPATHLEN+1];
@@ -428,8 +429,10 @@ calculate_path(void)
         char execpath[MAXPATHLEN+1];
 #endif
 
-    if (_path)
-        path = _Py_char2wchar(_path, NULL);
+    if (_path) {
+        path_buffer = _Py_char2wchar(_path, NULL);
+        path = path_buffer;
+    }
 
     /* 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
@@ -484,8 +487,8 @@ calculate_path(void)
     }
     else
         progpath[0] = '\0';
-    if (path != NULL)
-        PyMem_Free(path);
+    if (path_buffer != NULL)
+        PyMem_Free(path_buffer);
     if (progpath[0] != SEP && progpath[0] != '\0')
         absolutize(progpath);
     wcsncpy(argv0_path, progpath, MAXPATHLEN);