summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2014-06-25 00:39:37 +0800
committerXinchen Hui <laruence@php.net>2014-06-25 00:39:37 +0800
commit284141ca8fa94dac846d593af0628dbfc719402e (patch)
tree54823e2887bc65c522e51ff02b480c4be87cbdad
parentee30cc8a1e016bce8a2828d7755dfb7540a5a40c (diff)
downloadphp-git-284141ca8fa94dac846d593af0628dbfc719402e.tar.gz
Fixed _zend_get_parameters_array
it should not decrease the refcount (spotted by register_shutdown_function in ext/mysqli/tests/bug49442.phpt)
-rw-r--r--Zend/zend_API.c34
-rw-r--r--Zend/zend_API.h3
2 files changed, 1 insertions, 36 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index ea333632be..d2b474c15b 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 0b96db84f1..eafdf64b4b 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() \