felipe Mon Aug 18 19:42:39 2008 UTC Modified files: /php-src/ext/reflection php_reflection.c /php-src/ext/reflection/tests ReflectionMethod_invoke_basic.phpt property_exists.phpt Log: - MFB: New parameter parsing API - Fixed tests http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/php_reflection.c?r1=1.316&r2=1.317&diff_format=u Index: php-src/ext/reflection/php_reflection.c diff -u php-src/ext/reflection/php_reflection.c:1.316 php-src/ext/reflection/php_reflection.c:1.317 --- php-src/ext/reflection/php_reflection.c:1.316 Wed Aug 13 21:57:00 2008 +++ php-src/ext/reflection/php_reflection.c Mon Aug 18 19:42:38 2008 @@ -20,7 +20,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_reflection.c,v 1.316 2008/08/13 21:57:00 pajoye Exp $ */ +/* $Id: php_reflection.c,v 1.317 2008/08/18 19:42:38 felipe Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1659,9 +1659,8 @@ ZEND_METHOD(reflection_function, invoke) { zval *retval_ptr; - zval ***params; - int result; - int argc = ZEND_NUM_ARGS(); + zval ***params = NULL; + int result, num_args = 0; zend_fcall_info fci; zend_fcall_info_cache fcc; reflection_object *intern; @@ -1670,10 +1669,8 @@ METHOD_NOTSTATIC(reflection_function_ptr); GET_REFLECTION_OBJECT_PTR(fptr); - params = safe_emalloc(sizeof(zval **), argc, 0); - if (zend_get_parameters_array_ex(argc, params) == FAILURE) { - efree(params); - RETURN_FALSE; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", ¶ms, &num_args) == FAILURE) { + return; } fci.size = sizeof(fci); @@ -1682,7 +1679,7 @@ fci.symbol_table = NULL; fci.object_pp = NULL; fci.retval_ptr_ptr = &retval_ptr; - fci.param_count = argc; + fci.param_count = num_args; fci.params = params; fci.no_separation = 1; @@ -2497,22 +2494,16 @@ ZEND_METHOD(reflection_method, invoke) { zval *retval_ptr; - zval ***params; + zval ***params = NULL; zval **object_pp; reflection_object *intern; zend_function *mptr; - int argc = ZEND_NUM_ARGS(); - int result; + int result, num_args = 0; zend_fcall_info fci; zend_fcall_info_cache fcc; zend_class_entry *obj_ce; METHOD_NOTSTATIC(reflection_method_ptr); - - if (argc < 1) { - zend_error(E_WARNING, "Invoke() expects at least one parameter, none given"); - RETURN_FALSE; - } GET_REFLECTION_OBJECT_PTR(mptr); @@ -2533,10 +2524,8 @@ return; } - params = safe_emalloc(sizeof(zval **), argc, 0); - if (zend_get_parameters_array_ex(argc, params) == FAILURE) { - efree(params); - RETURN_FALSE; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", ¶ms, &num_args) == FAILURE) { + return; } /* In case this is a static method, we should'nt pass an object_pp @@ -2571,7 +2560,7 @@ fci.symbol_table = NULL; fci.object_pp = object_pp; fci.retval_ptr_ptr = &retval_ptr; - fci.param_count = argc-1; + fci.param_count = num_args-1; fci.params = params+1; fci.no_separation = 1; @@ -3767,14 +3756,14 @@ zval *retval_ptr = NULL; reflection_object *intern; zend_class_entry *ce; - int argc = ZEND_NUM_ARGS(); METHOD_NOTSTATIC(reflection_class_ptr); GET_REFLECTION_OBJECT_PTR(ce); /* Run the constructor if there is one */ if (ce->constructor) { - zval ***params; + zval ***params = NULL; + int num_args = 0; zend_fcall_info fci; zend_fcall_info_cache fcc; @@ -3783,9 +3772,10 @@ return; } - params = safe_emalloc(sizeof(zval **), argc, 0); - if (zend_get_parameters_array_ex(argc, params) == FAILURE) { - efree(params); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "*", ¶ms, &num_args) == FAILURE) { + if (params) { + efree(params); + } RETURN_FALSE; } @@ -3797,7 +3787,7 @@ fci.symbol_table = NULL; fci.object_pp = &return_value; fci.retval_ptr_ptr = &retval_ptr; - fci.param_count = argc; + fci.param_count = num_args; fci.params = params; fci.no_separation = 1; @@ -3818,7 +3808,10 @@ if (retval_ptr) { zval_ptr_dtor(&retval_ptr); } - efree(params); + + if (params) { + efree(params); + } } else if (!ZEND_NUM_ARGS()) { object_init_ex(return_value, ce); } else { @@ -5423,7 +5416,7 @@ php_info_print_table_start(); php_info_print_table_header(2, "Reflection", "enabled"); - php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.316 2008/08/13 21:57:00 pajoye Exp $"); + php_info_print_table_row(2, "Version", "$Id: php_reflection.c,v 1.317 2008/08/18 19:42:38 felipe Exp $"); php_info_print_table_end(); } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt?r1=1.4&r2=1.5&diff_format=u Index: php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt diff -u php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt:1.4 php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt:1.5 --- php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt:1.4 Tue May 27 13:16:27 2008 +++ php-src/ext/reflection/tests/ReflectionMethod_invoke_basic.phpt Mon Aug 18 19:42:39 2008 @@ -91,8 +91,8 @@ Static method: -Warning: Invoke() expects at least one parameter, none given in %sReflectionMethod_invoke_basic.php on line %d -bool(false) +Warning: ReflectionMethod::invoke() expects at least 1 parameter, 0 given in %sReflectionMethod_invoke_basic.php on line %d +NULL Called staticMethod() Notice: Undefined variable: this in %sReflectionMethod_invoke_basic.php on line %d http://cvs.php.net/viewvc.cgi/php-src/ext/reflection/tests/property_exists.phpt?r1=1.5&r2=1.6&diff_format=u Index: php-src/ext/reflection/tests/property_exists.phpt diff -u php-src/ext/reflection/tests/property_exists.phpt:1.5 php-src/ext/reflection/tests/property_exists.phpt:1.6 --- php-src/ext/reflection/tests/property_exists.phpt:1.5 Sat May 24 13:35:03 2008 +++ php-src/ext/reflection/tests/property_exists.phpt Mon Aug 18 19:42:39 2008 @@ -108,9 +108,9 @@ obj(A)::$a bool(true) obj(A)::$b -bool(false) +bool(true) obj(A)::$c -bool(false) +bool(true) obj(A)::$d bool(false) obj(A)::$e @@ -130,9 +130,9 @@ A::$a bool(true) A::$b -bool(false) +bool(true) A::$c -bool(false) +bool(true) A::$d bool(false) A::$e @@ -152,9 +152,9 @@ B::$a bool(true) B::$b -bool(false) +bool(true) B::$c -bool(false) +bool(true) B::$d bool(false) B::$e @@ -174,11 +174,11 @@ C::$a bool(true) C::$b -bool(false) +bool(true) C::$c bool(false) C::$d -bool(false) +bool(true) C::$e bool(false) ===C=== @@ -196,11 +196,11 @@ obj(C)::$a bool(true) obj(C)::$b -bool(false) +bool(true) obj(C)::$c bool(false) obj(C)::$d -bool(false) +bool(true) obj(C)::$e bool(false) ===PROBLEMS===
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php