Commit: 5a7ed4054e4105db01fac167115daf271d348da8 Author: Nuno Lopes <[email protected]> Sat, 20 Sep 2014 17:52:57 -0400 Parents: b3caf8a34031ac0a80fb086cb9afe88e8d2d029f Branches: master
Link: http://git.php.net/?p=web/gcov.git;a=commitdiff;h=5a7ed4054e4105db01fac167115daf271d348da8 Log: update zend_parse_parameter*() checker for PHP 7 Changed paths: M cron/check_parameters.php Diff: diff --git a/cron/check_parameters.php b/cron/check_parameters.php index 20cf264..6d9fee8 100644 --- a/cron/check_parameters.php +++ b/cron/check_parameters.php @@ -24,7 +24,7 @@ define('REPORT_LEVEL', 1); // 0 reports less false-positives. up to level 5. -define('VERSION', $phpver == 'PHP_HEAD' ? '6' : strtr(substr($phpver, 4), '_', '.')); +define('VERSION', $phpver == 'PHP_HEAD' ? '7' : strtr(substr($phpver, 4), '_', '.')); // be sure you have enough memory and stack for PHP. pcre will push the limits! ini_set('pcre.backtrack_limit', 10000000); @@ -35,37 +35,40 @@ ini_set('pcre.backtrack_limit', 10000000); $API_params = array( 'a' => array('zval**'), // array as zval* + 'A' => array('zval**'), // array or object as zval* 'b' => array('zend_bool*'), // boolean 'C' => array('zend_class_entry**'), // class 'd' => array('double*'), // double 'f' => array('zend_fcall_info*', 'zend_fcall_info_cache*'), // function 'h' => array('HashTable**'), // array as an HashTable* + 'H' => array('HashTable**'), // array or object as an HashTable* 'l' => array('long*'), // long 'L' => array('long*'), // long 'o' => array('zval**'), //object 'O' => array('zval**', 'zend_class_entry*'), // object of given type + 'p' => array('char**', 'int*'), // a valid path 'r' => array('zval**'), // resource 's' => array('char**', 'int*'), // string 'z' => array('zval**'), // zval* 'Z' => array('zval***') // zval** ); -// specific to PHP >= 5.3 -if (version_compare(VERSION, '5.3', 'ge')) { - $API_params['A'] = $API_params['a']; // array or object (zval *) - $API_params['H'] = $API_params['h']; // array or object (HASH_OF) -} - -// specific to PHP >= 5.4 -if (version_compare(VERSION, '5.4', 'ge')) { - $API_params['p'] = $API_params['s']; // a valid path -} - // specific to PHP >= 5.6 if (version_compare(VERSION, '5.6', 'ge')) { $API_params['S'] = array('char**', 'zend_str_size*'); // string } +// specific to PHP >= 7.0 +if (version_compare(VERSION, '7', 'ge')) { + $API_params['l'] = array('zend_long*'); // long + $API_params['L'] = array('zend_long*'); // long + $API_params['p'] = array('char**', 'size_t*'); // a valid path + $API_params['P'] = array('zend_string*'); // a valid path + $API_params['s'] = array('char**', 'size_t*'); // string + $API_params['S'] = array('zend_string*'); // string + unset($API_params['Z']); // not supported anymore +} + $check_params = array(); /** reports an error, according to its level */ @@ -239,9 +242,9 @@ function check_function($name, $txt, $offset) } break; - // separate_zval_if_not_ref + // SEPARATE_ZVAL case '/': - if (!in_array($last_char, array('r', 'z'))) { + if (!in_array($last_char, array('a', 'A', 'h', 'H', 'o', 'O', 'r', 'z'))) { error("the '/' specifier cannot be applied to '$last_char'"); } break; @@ -257,16 +260,16 @@ function check_function($name, $txt, $offset) case '+': case '*': - if (version_compare(VERSION, '5.3', 'ge')) { - if ($varargs) { - error("A varargs specifier can only be used once. repeated char at column $i"); + if ($varargs) { + error("A varargs specifier can only be used once. repeated char at column $i"); + } else { + if (version_compare(VERSION, '7', 'ge')) { + check_param($params, ++$j, 'zval**', $optional); } else { check_param($params, ++$j, 'zval****', $optional); - check_param($params, ++$j, 'int*', $optional); - $varargs = true; } - } else { - error("unknown char ('$char') at column $i"); + check_param($params, ++$j, 'int*', $optional); + $varargs = true; } break; -- PHP Webmaster List Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
