com php-src: Cleanup and also include the error path into test: ext/standard/string.c ext/standard/tests/strings/dirname_mult i.phpt

From: Date: Mon, 27 Jul 2015 14:22:13 +0000
Subject: com php-src: Cleanup and also include the error path into test: ext/standard/string.c ext/standard/tests/strings/dirname_mult i.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-88182@lists.php.net to get a copy of this message
Commit: 11613a1b58a5a890ddc99d81cefc6fdced8f1af8 Author: Xinchen Hui <laruence@php.net> Mon, 27 Jul 2015 22:22:13 +0800 Parents: 605fbabfba7420a3fff46706851e93d38ce836a4 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=11613a1b58a5a890ddc99d81cefc6fdced8f1af8 Log: Cleanup and also include the error path into test Changed paths: M ext/standard/string.c M ext/standard/tests/strings/dirname_multi.phpt Diff: diff --git a/ext/standard/string.c b/ext/standard/string.c index 143c6f6..27b9de9 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1653,8 +1653,8 @@ PHPAPI size_t php_dirname(char *path, size_t len) PHP_FUNCTION(dirname) { char *str; - zend_string *ret; size_t str_len; + zend_string *ret; zend_long levels = 1; if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|l", &str, &str_len, &levels) == FAILURE) { @@ -1666,18 +1666,16 @@ PHP_FUNCTION(dirname) if (levels == 1) { /* Defaut case */ ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len); - } else if (levels < 1) { php_error_docref(NULL, E_WARNING, "Invalid argument, levels must be >= 1"); return; - - } else { /* Some levels up */ do { - ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len=ZSTR_LEN(ret)); - } while (ZSTR_LEN(ret)<str_len && --levels>0); + ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len = ZSTR_LEN(ret)); + } while (ZSTR_LEN(ret) < str_len && --levels); } + RETURN_NEW_STR(ret); } /* }}} */ diff --git a/ext/standard/tests/strings/dirname_multi.phpt b/ext/standard/tests/strings/dirname_multi.phpt index d0fdfac..bfd7b50 100644 --- a/ext/standard/tests/strings/dirname_multi.phpt +++ b/ext/standard/tests/strings/dirname_multi.phpt @@ -5,13 +5,15 @@ Test dirname() function : usage variations /* Prototype: string dirname ( string $path [, int nb]); Description: Returns directory name component of path. */ -for ($i=1 ; $i<5 ; $i++) { +for ($i=0 ; $i<5 ; $i++) { var_dump(dirname("/foo/bar/baz", $i)); } var_dump(dirname("/foo/bar/baz", PHP_INT_MAX)); ?> Done ---EXPECT-- +--EXPECTF-- +Warning: dirname(): Invalid argument, levels must be >= 1 in %sdirname_multi.php on line %d +NULL string(8) "/foo/bar" string(4) "/foo" string(1) "/"

« previous php.cvs (#88182) next »