From be013212bcabf7a8012ca3e930a0f1f3bcf31ff1 Mon Sep 17 00:00:00 2001 From: Markus Fischer Date: Tue, 23 Apr 2002 21:21:41 +0000 Subject: [PATCH] - Fix pcntl_waitpid() [Fixes #16766]. --- ext/pcntl/pcntl.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index 48ef549b955..aa5a90d28c5 100755 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -220,27 +220,21 @@ PHP_FUNCTION(pcntl_fork) 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); + status = Z_LVAL_P(z_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); + child_id = waitpid((pid_t) pid, &status, options); + + Z_LVAL_P(z_status) = status; + + RETURN_LONG((long) child_id); } /* }}} */