From 4a935b1e3ea837109ea54bb6a10eb62dfd28205d Mon Sep 17 00:00:00 2001 From: giovannibajo Date: Fri, 10 Jul 2009 12:56:53 +0000 Subject: [PATCH] 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 --- source/linux/main.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/source/linux/main.c b/source/linux/main.c index 1a3ec87..d495bc9 100644 --- a/source/linux/main.c +++ b/source/linux/main.c @@ -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");