Use setenv() instead of putenv(). This fixes a nasty segfault on Mac OSX

because the memory used in the call to putenv() were not being saved.


git-svn-id: http://svn.pyinstaller.org/trunk@690 8dd32b29-ccff-0310-8a9a-9233e24343b1
This commit is contained in:
giovannibajo
2009-07-10 12:56:53 +00:00
parent cc7e07359d
commit 4a935b1e3e
+3 -9
View File
@@ -42,16 +42,13 @@ void exportWorkpath(char *workpath, char *envvar_name)
char envvar[_MAX_PATH * 4 + 12];
char *old_envvar;
strcpy(envvar, envvar_name);
strcat(envvar, "=");
strcat(envvar, workpath);
envvar[strlen(envvar)-1] = '\0';
strcpy(envvar, workpath);
old_envvar = getenv(envvar_name);
if (old_envvar) {
strcat(envvar, ":");
strcat(envvar, old_envvar);
}
putenv(envvar);
setenv(envvar_name, envvar, 1);
VS("%s\n", envvar);
}
@@ -59,7 +56,6 @@ int main(int argc, char* argv[])
{
char thisfile[_MAX_PATH];
char homepath[_MAX_PATH];
char magic_envvar[_MAX_PATH + 12];
char archivefile[_MAX_PATH + 5];
TOC *ptoc = NULL;
int rc = 0;
@@ -117,9 +113,7 @@ int main(int argc, char* argv[])
VS("Executing self as child with ");
/* run the "child" process, then clean up */
strcpy(magic_envvar, "_MEIPASS2=");
strcat(magic_envvar, workpath);
putenv(magic_envvar);
setenv("_MEIPASS2", workpath, 1);
/* add workpath to LD_LIBRARY_PATH */
exportWorkpath(workpath, "LD_LIBRARY_PATH");