cvs: php4 /ext/pcntl pcntl.c
| From: | Markus Fischer | Date: | Tue, 23 Apr 2002 21:21:41 +0000 |
| Subject: | cvs: php4 /ext/pcntl pcntl.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-11361@lists.php.net to get a copy of this message | ||
mfischer Tue Apr 23 17:21:41 2002 EDT
Modified files:
/php4/ext/pcntl pcntl.c
Log:
- Fix pcntl_waitpid() [Fixes #16766].
Index: php4/ext/pcntl/pcntl.c
diff -u php4/ext/pcntl/pcntl.c:1.23 php4/ext/pcntl/pcntl.c:1.24
--- php4/ext/pcntl/pcntl.c:1.23 Sun Mar 17 14:41:24 2002
+++ php4/ext/pcntl/pcntl.c Tue Apr 23 17:21:41 2002
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pcntl.c,v 1.23 2002/03/17 19:41:24 jason Exp $ */
+/* $Id: pcntl.c,v 1.24 2002/04/23 21:21:41 mfischer Exp $ */
#define PCNTL_DEBUG 0
@@ -220,27 +220,21 @@
Waits on or returns the status of a forked child as defined by the waitpid() system call */
PHP_FUNCTION(pcntl_waitpid)
{
- zval **pid, **status, **options;
- int temp_options, temp_status = 0;
- pid_t temp_id;
+ long pid, options = 0;
+ zval *z_status = NULL;
+ int status;
+ pid_t child_id;
- if (ZEND_NUM_ARGS() > 3 || ZEND_NUM_ARGS() < 2 || zend_get_parameters_ex(ZEND_NUM_ARGS(),
&pid, &status, &options) == FAILURE) {
- WRONG_PARAM_COUNT;
- }
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lz|l", &pid, &z_status,
&options) == FAILURE)
+ return;
- convert_to_long_ex(pid);
- convert_to_long_ex(options);
- convert_to_long_ex(status);
-
- if (ZEND_NUM_ARGS() == 2) {
- temp_options = 0;
- } else {
- temp_options = Z_LVAL_PP(options);
- }
-
- temp_id = waitpid((pid_t) Z_LVAL_PP(pid), &temp_status, temp_options);
- Z_LVAL_PP(status) = temp_status;
- RETURN_LONG((long) temp_id);
+ status = Z_LVAL_P(z_status);
+
+ child_id = waitpid((pid_t) pid, &status, options);
+
+ Z_LVAL_P(z_status) = status;
+
+ RETURN_LONG((long) child_id);
}
/* }}} */