From: Felipe Pena Date: Sun, 10 Aug 2008 21:48:22 +0000 (+0000) Subject: - New parameter parsing API (for *printf()) X-Git-Tag: BEFORE_HEAD_NS_CHANGE~788 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b9b83ec794f2377b25c8c407076d88a8e971c065;p=php - New parameter parsing API (for *printf()) --- diff --git a/ext/standard/formatted_print.c b/ext/standard/formatted_print.c index d8d1fb88b0..49bc3dad5b 100644 --- a/ext/standard/formatted_print.c +++ b/ext/standard/formatted_print.c @@ -980,16 +980,13 @@ static zstr php_u_formatted_print(int ht, int *len, int use_array, int format_of int always_sign; zstr result_str; - argc = ZEND_NUM_ARGS(); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+", &args, &argc) == FAILURE) { + return NULL_ZSTR; + } /* verify the number of args */ if ((use_array && argc != (2 + format_offset)) || (!use_array && argc < (1 + format_offset))) { - WRONG_PARAM_COUNT_WITH_RETVAL(NULL_ZSTR); - } - args = (zval ***)safe_emalloc(argc, sizeof(zval *), 0); - - if (zend_get_parameters_array_ex(argc, args) == FAILURE) { efree(args); WRONG_PARAM_COUNT_WITH_RETVAL(NULL_ZSTR); } @@ -1364,19 +1361,19 @@ PHP_FUNCTION(vprintf) PHP_FUNCTION(fprintf) { php_stream *stream; - zval **arg1, **arg2; + zval *arg1, **arg2; zstr result; int len, ret; if (ZEND_NUM_ARGS() < 2) { WRONG_PARAM_COUNT; } - - if (zend_get_parameters_ex(2, &arg1, &arg2)==FAILURE) { + + if (zend_parse_parameters(2 TSRMLS_CC, "rZ", &arg1, &arg2) == FAILURE) { RETURN_FALSE; } - php_stream_from_zval(stream, arg1); + php_stream_from_zval(stream, &arg1); if (Z_TYPE_PP(arg2) != IS_STRING && Z_TYPE_PP(arg2) != IS_UNICODE) { convert_to_text_ex(arg2); @@ -1406,7 +1403,7 @@ PHP_FUNCTION(fprintf) PHP_FUNCTION(vfprintf) { php_stream *stream; - zval **arg1, **arg2; + zval *arg1, **arg2; zstr result; int len, ret; @@ -1414,11 +1411,11 @@ PHP_FUNCTION(vfprintf) WRONG_PARAM_COUNT; } - if (zend_get_parameters_ex(2, &arg1, &arg2)==FAILURE) { + if (zend_parse_parameters(2 TSRMLS_CC, "rZ", &arg1, &arg2) == FAILURE) { RETURN_FALSE; } - php_stream_from_zval(stream, arg1); + php_stream_from_zval(stream, &arg1); if (Z_TYPE_PP(arg2) != IS_STRING && Z_TYPE_PP(arg2) != IS_UNICODE) { convert_to_text_ex(arg2); diff --git a/ext/standard/tests/strings/printf.phpt b/ext/standard/tests/strings/printf.phpt index c6858eea56..d2e6143ce1 100755 --- a/ext/standard/tests/strings/printf.phpt +++ b/ext/standard/tests/strings/printf.phpt @@ -227,7 +227,7 @@ printf("%d", $tempstring); --EXPECTF-- *** Output for zero argument *** -Warning: Wrong parameter count for printf() in %s on line %d +Warning: printf() expects at least %d parameter, %d given in %s on line %d *** Output for insufficient number of arguments *** diff --git a/ext/standard/tests/strings/sprintf_error.phpt b/ext/standard/tests/strings/sprintf_error.phpt index 1200ab27a6..f7f9e37e77 100644 --- a/ext/standard/tests/strings/sprintf_error.phpt +++ b/ext/standard/tests/strings/sprintf_error.phpt @@ -39,7 +39,7 @@ echo "Done"; -- Testing sprintf() function with Zero arguments -- -Warning: Wrong parameter count for sprintf() in %s on line %d +Warning: sprintf() expects at least %d parameter, %d given in %s on line %d bool(false) -- Testing sprintf() function with less than expected no. of arguments -- diff --git a/ext/standard/tests/strings/vfprintf_error4.phpt b/ext/standard/tests/strings/vfprintf_error4.phpt index 384d9cd740..57be8f7e3c 100644 --- a/ext/standard/tests/strings/vfprintf_error4.phpt +++ b/ext/standard/tests/strings/vfprintf_error4.phpt @@ -36,7 +36,7 @@ unlink( $file ); --EXPECTF-- -- Testing vfprintf() function with other strangeties -- -Warning: vfprintf(): supplied argument is not a valid stream resource in %s on line %d +Warning: vfprintf() expects parameter 1 to be resource, Unicode string given in %s on line %d bool(false) Warning: vfprintf(): Zero is not a valid argument number in %s on line %d diff --git a/ext/standard/tests/strings/vsprintf_error.phpt b/ext/standard/tests/strings/vsprintf_error.phpt index 0ece4a420f..8d581474b4 100644 --- a/ext/standard/tests/strings/vsprintf_error.phpt +++ b/ext/standard/tests/strings/vsprintf_error.phpt @@ -31,7 +31,7 @@ echo "Done"; -- Testing vsprintf() function with Zero arguments -- -Warning: Wrong parameter count for vsprintf() in %s on line %d +Warning: vsprintf() expects at least %d parameter, %d given in %s on line %d bool(false) -- Testing vsprintf() function with less than expected no. of arguments --