Skip to content

Commit fe44e16

Browse files
committed
Promote warnings to errors in dirname()
1 parent 698491d commit fe44e16

File tree

4 files changed

+23
-13
lines changed

4 files changed

+23
-13
lines changed

ext/standard/string.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,7 +1619,7 @@ PHPAPI size_t php_dirname(char *path, size_t len)
16191619
}
16201620
/* }}} */
16211621

1622-
/* {{{ proto string|null dirname(string path[, int levels])
1622+
/* {{{ proto string dirname(string path[, int levels])
16231623
Returns the directory name component of the path */
16241624
PHP_FUNCTION(dirname)
16251625
{
@@ -1644,7 +1644,7 @@ PHP_FUNCTION(dirname)
16441644
ZSTR_LEN(ret) = zend_dirname(ZSTR_VAL(ret), str_len);
16451645
#endif
16461646
} else if (levels < 1) {
1647-
php_error_docref(NULL, E_WARNING, "Invalid argument, levels must be >= 1");
1647+
zend_throw_error(NULL, "Invalid argument, levels must be >= 1");
16481648
zend_string_efree(ret);
16491649
return;
16501650
} else {

ext/standard/tests/strings/dirname_error.phpt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ Test dirname() function : error conditions
88
echo "*** Testing error conditions ***\n";
99

1010
// Bad arg
11-
var_dump( dirname("/var/tmp/bar.gz", 0) );
11+
try {
12+
dirname("/var/tmp/bar.gz", 0);
13+
} catch (\Error $e) {
14+
echo $e->getMessage() . "\n";
15+
}
1216

1317
echo "Done\n";
1418
?>
1519
--EXPECTF--
1620
*** Testing error conditions ***
17-
18-
Warning: dirname(): Invalid argument, levels must be >= 1 in %s on line %d
19-
NULL
21+
Invalid argument, levels must be >= 1
2022
Done

ext/standard/tests/strings/dirname_multi.phpt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,17 @@ if((substr(PHP_OS, 0, 3) == "WIN"))
1111
Description: Returns directory name component of path.
1212
*/
1313
for ($i=0 ; $i<5 ; $i++) {
14-
var_dump(dirname("/foo/bar/baz", $i));
14+
try {
15+
var_dump(dirname("/foo/bar/baz", $i));
16+
} catch (\Error $e) {
17+
echo $e->getMessage() . "\n";
18+
}
1519
}
1620
var_dump(dirname("/foo/bar/baz", PHP_INT_MAX));
1721
?>
1822
Done
1923
--EXPECTF--
20-
Warning: dirname(): Invalid argument, levels must be >= 1 in %sdirname_multi.php on line %d
21-
NULL
24+
Invalid argument, levels must be >= 1
2225
string(8) "/foo/bar"
2326
string(4) "/foo"
2427
string(1) "/"

ext/standard/tests/strings/dirname_multi_win.phpt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,22 @@ if((substr(PHP_OS, 0, 3) != "WIN"))
1010
/* Prototype: string dirname ( string $path [, int nb]);
1111
Description: Returns directory name component of path.
1212
*/
13+
1314
for ($i=0 ; $i<5 ; $i++) {
14-
var_dump(dirname("/foo/bar/baz", $i));
15+
try {
16+
var_dump(dirname("/foo/bar/baz", $i));
17+
} catch (\Error $e) {
18+
echo $e->getMessage() . "\n";
19+
}
1520
}
21+
1622
var_dump(dirname("/foo/bar/baz", PHP_INT_MAX));
1723
var_dump(dirname("g:/foo/bar/baz", PHP_INT_MAX));
1824
var_dump(dirname("g:foo/bar/baz", PHP_INT_MAX));
1925
?>
2026
Done
21-
--EXPECTF--
22-
Warning: dirname(): Invalid argument, levels must be >= 1 in %sdirname_multi_win.php on line %d
23-
NULL
27+
--EXPECT--
28+
Invalid argument, levels must be >= 1
2429
string(8) "/foo/bar"
2530
string(4) "/foo"
2631
string(1) "\"

0 commit comments

Comments
 (0)