dmitry                                   Wed, 30 Sep 2009 13:04:28 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=288993

Log:
pcntl_exec() should inherit environment in case it's not provided as an argument

Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/pcntl/pcntl.c
    U   php/php-src/trunk/ext/pcntl/pcntl.c

Modified: php/php-src/branches/PHP_5_3/ext/pcntl/pcntl.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pcntl/pcntl.c      2009-09-30 12:40:17 UTC 
(rev 288992)
+++ php/php-src/branches/PHP_5_3/ext/pcntl/pcntl.c      2009-09-30 13:04:28 UTC 
(rev 288993)
@@ -727,16 +727,19 @@
                        if (return_val == HASH_KEY_IS_LONG) efree(key);
                }
                *(pair) = NULL;
-       }
+
+               if (execve(path, argv, envp) == -1) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has 
occured: (errno %d) %s", errno, strerror(errno));
+               }

-       if (execve(path, argv, envp) == -1) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: 
(errno %d) %s", errno, strerror(errno));
-       }
-
-       /* Cleanup */
-       if (envp != NULL) {
+               /* Cleanup */
                for (pair = envp; *pair != NULL; pair++) efree(*pair);
                efree(envp);
+       } else {
+
+               if (execv(path, argv) == -1) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has 
occured: (errno %d) %s", errno, strerror(errno));
+               }
        }

        efree(argv);

Modified: php/php-src/trunk/ext/pcntl/pcntl.c
===================================================================
--- php/php-src/trunk/ext/pcntl/pcntl.c 2009-09-30 12:40:17 UTC (rev 288992)
+++ php/php-src/trunk/ext/pcntl/pcntl.c 2009-09-30 13:04:28 UTC (rev 288993)
@@ -727,18 +727,21 @@
                        if (return_val == HASH_KEY_IS_LONG) efree(key);
                }
                *(pair) = NULL;
-       }
-
-       if (execve(path, argv, envp) == -1) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has occured: 
(errno %d) %s", errno, strerror(errno));
-       }
-
-       /* Cleanup */
-       if (envp != NULL) {
+
+               if (execve(path, argv, envp) == -1) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has 
occured: (errno %d) %s", errno, strerror(errno));
+               }
+
+               /* Cleanup */
                for (pair = envp; *pair != NULL; pair++) efree(*pair);
                efree(envp);
+       } else {
+
+               if (execv(path, argv) == -1) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Error has 
occured: (errno %d) %s", errno, strerror(errno));
+               }
        }
-
+
        efree(argv);

        RETURN_FALSE;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to