]> ruderich.org/simon Gitweb - coloredstderr/coloredstderr.git/commitdiff
Restore environment for execvpe() if the exec fails.
authorSimon Ruderich <simon@ruderich.org>
Sat, 29 Jun 2013 21:09:05 +0000 (23:09 +0200)
committerSimon Ruderich <simon@ruderich.org>
Sat, 29 Jun 2013 21:24:04 +0000 (23:24 +0200)
src/coloredstderr.c

index 15581a622c30f15d437cd982244d88498ac45803..a78fdd9a2e7ed377b36e56555d2de77f9fe1960a 100644 (file)
@@ -646,10 +646,16 @@ HOOK_FUNC_DEF2(int, execvp, char const *, file, char * const *, argv) {
 #ifdef HAVE_EXECVPE
 extern char **environ;
 int execvpe(char const *file, char * const argv[], char * const envp[]) {
+    int result;
+    char **old_environ = environ;
+
     /* Fake the environment so we can reuse execvp(). */
     environ = (char **)envp;
 
     /* execvp() updates the environment. */
-    return execvp(file, argv);
+    result = execvp(file, argv);
+
+    environ = old_environ;
+    return result;
 }
 #endif