From db6990a91b2ca931074b29886c7f7819b14bb021 Mon Sep 17 00:00:00 2001 From: Bob Weinand Date: Mon, 22 Jun 2015 10:17:35 +0200 Subject: [PATCH] Fix genarginfo to respect by-ref passing --- Zend/zend_builtin_functions.c | 4 ++-- scripts/dev/genarginfo.php | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 98970e252a..08e78fdc33 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -738,8 +738,8 @@ ZEND_FUNCTION(strncasecmp) } /* }}} */ -/* {{{ proto array each(array arr) - Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element */ +/* {{{ proto mixed each(array &arr) + Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element, or false if there is no element at this place */ ZEND_FUNCTION(each) { zval *array, *entry, tmp; diff --git a/scripts/dev/genarginfo.php b/scripts/dev/genarginfo.php index de69f5b045..94c10f8f83 100644 --- a/scripts/dev/genarginfo.php +++ b/scripts/dev/genarginfo.php @@ -38,13 +38,21 @@ if($m) { echo "ZEND_BEGIN_ARG_INFO_EX(arginfo_{$name}, 0, 0, {$required})\n"; } foreach($args as $arg) { - list($type,$name) = explode(' ', $arg, 2); - list($name,) = explode('|', $name, 2); // No |'s in the names - choose the first + list($type, $name) = explode(' ', trim($arg), 2); + list($name) = explode('|', trim($name), 2); // No |'s in the names - choose the first + $name = trim($name); + if ($ref = ($name[0] == "&")) { + $name = trim(substr($name, 1)); + } + list($name, $default) = explode("=", $name, 2); + $name = trim($name); + $allow_null = (int) (trim($default) == "null"); + $ref = (int) $ref; $type=trim($type); if(!empty($types[$type])) { - echo "\tZEND_ARG_TYPE_INFO(0, {$name}, {$types[$type]}, 0)\n"; + echo "\tZEND_ARG_TYPE_INFO($ref, {$name}, {$types[$type]}, $allow_null)\n"; } else { - echo "\tZEND_ARG_INFO(0, {$name})\n"; + echo "\tZEND_ARG_INFO($ref, {$name})\n"; } } echo "ZEND_END_ARG_INFO()\n\n"; -- 2.40.0