diff options
author | Xinchen Hui <laruence@php.net> | 2015-07-27 22:22:13 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2015-07-27 22:22:13 +0800 |
commit | 11613a1b58a5a890ddc99d81cefc6fdced8f1af8 (patch) | |
tree | 152bbbd39db50d05370397131889c33eed7e4aa2 /ext/standard/string.c | |
parent | 605fbabfba7420a3fff46706851e93d38ce836a4 (diff) | |
download | php-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.c | 10 |
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); } /* }}} */ |