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: | Xinchen Hui | 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) "/"