summaryrefslogtreecommitdiff
path: root/ext/standard/string.c
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2015-07-27 22:22:13 +0800
committerXinchen Hui <laruence@php.net>2015-07-27 22:22:13 +0800
commit11613a1b58a5a890ddc99d81cefc6fdced8f1af8 (patch)
tree152bbbd39db50d05370397131889c33eed7e4aa2 /ext/standard/string.c
parent605fbabfba7420a3fff46706851e93d38ce836a4 (diff)
downloadphp-git-11613a1b58a5a890ddc99d81cefc6fdced8f1af8.tar.gz
Cleanup and also include the error path into test
Diffstat (limited to 'ext/standard/string.c')
-rw-r--r--ext/standard/string.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 143c6f636c..27b9de94b4 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);
}
/* }}} */