]> granicus.if.org Git - php/commitdiff
Fixed _zend_get_parameters_array
authorXinchen Hui <laruence@php.net>
Tue, 24 Jun 2014 16:39:37 +0000 (00:39 +0800)
committerXinchen Hui <laruence@php.net>
Tue, 24 Jun 2014 16:39:37 +0000 (00:39 +0800)
it should not decrease the refcount (spotted by
register_shutdown_function in ext/mysqli/tests/bug49442.phpt)

Zend/zend_API.c
Zend/zend_API.h

index ea333632be9363255017e4b22af02b6a6185b2cc..d2b474c15b7adcceee2e477e52146c6f09668429 100644 (file)
@@ -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, ...) /* {{{ */
index 0b96db84f1b03808a418e888640a5045cc318ad4..eafdf64b4b1e27b0480a1171ab0afb1fb55ff033 100644 (file)
@@ -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()                                                                           \