com php-src: Fixed _zend_get_parameters_array: Zend /zend_API.c Zend/zend_API.h
| From: | Xinchen Hui | Date: | Tue, 24 Jun 2014 16:39:37 +0000 |
| Subject: | com php-src: Fixed _zend_get_parameters_array: Zend /zend_API.c Zend/zend_API.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-79033@lists.php.net to get a copy of this message | ||
Commit: 284141ca8fa94dac846d593af0628dbfc719402e
Author: Xinchen Hui <laruence@php.net> Wed, 25 Jun 2014 00:39:37 +0800
Parents: ee30cc8a1e016bce8a2828d7755dfb7540a5a40c
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=284141ca8fa94dac846d593af0628dbfc719402e
Log:
Fixed _zend_get_parameters_array
it should not decrease the refcount (spotted by
register_shutdown_function in ext/mysqli/tests/bug49442.phpt)
Bugs:
https://bugs.php.net/49442
Changed paths:
M Zend/zend_API.c
M Zend/zend_API.h
Diff:
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index ea33363..d2b474c 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -78,40 +78,6 @@ ZEND_API int zend_get_parameters(int ht, int param_count, ...) /* {{{ */
}
/* }}} */
-ZEND_API int _zend_get_parameters_array(int ht, int param_count, zval *argument_array TSRMLS_DC) /*
{{{ */
-{
- zval *p;
- int arg_count;
- zval *param_ptr;
-
- p = zend_vm_stack_top(TSRMLS_C) - 1;
- arg_count = Z_LVAL_P(p);
-
- if (param_count>arg_count) {
- return FAILURE;
- }
-
- while (param_count-->0) {
- param_ptr = (p-arg_count);
- if (Z_REFCOUNTED_P(param_ptr) &&
- !Z_ISREF_P(param_ptr) &&
- Z_REFCOUNT_P(param_ptr) > 1) {
- zval new_tmp;
-
- ZVAL_DUP(&new_tmp, param_ptr);
- Z_DELREF_P(param_ptr);
- ZVAL_COPY_VALUE(argument_array, &new_tmp);
- } else {
- ZVAL_COPY_VALUE(argument_array, param_ptr);
- }
- argument_array++;
- arg_count--;
- }
-
- return SUCCESS;
-}
-/* }}} */
-
/* Zend-optimized Extended functions */
/* this function doesn't check for too many parameters */
ZEND_API int zend_get_parameters_ex(int param_count, ...) /* {{{ */
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index 0b96db8..eafdf64 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -233,7 +233,6 @@ int zend_next_free_module(void);
BEGIN_EXTERN_C()
ZEND_API int zend_get_parameters(int ht, int param_count, ...);
-ZEND_API int _zend_get_parameters_array(int ht, int param_count, zval *argument_array TSRMLS_DC);
ZEND_API ZEND_ATTRIBUTE_DEPRECATED int zend_get_parameters_ex(int param_count, ...);
ZEND_API int _zend_get_parameters_array_ex(int param_count, zval *argument_array TSRMLS_DC);
@@ -241,7 +240,7 @@ ZEND_API int _zend_get_parameters_array_ex(int param_count, zval *argument_array
ZEND_API int zend_copy_parameters_array(int param_count, zval *argument_array TSRMLS_DC);
#define zend_get_parameters_array(ht, param_count, argument_array) \
- _zend_get_parameters_array(ht, param_count, argument_array TSRMLS_CC)
+ _zend_get_parameters_array_ex(param_count, argument_array TSRMLS_CC)
#define zend_get_parameters_array_ex(param_count, argument_array) \
_zend_get_parameters_array_ex(param_count, argument_array TSRMLS_CC)
#define zend_parse_parameters_none() \