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");