diff options
author | Anatol Belski <ab@php.net> | 2014-01-03 22:25:58 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2014-01-03 22:25:58 +0100 |
commit | 46f60fae22b420320f3616e00928d70706cf4f4c (patch) | |
tree | 8202e00dc28dee6500a621cc2bdc1d3e16e85285 | |
parent | c0d060f5c02db168f1de895b41afffbc6e3cacfb (diff) | |
download | php-git-46f60fae22b420320f3616e00928d70706cf4f4c.tar.gz |
Fixed bug #66395 basename function doesn't remove drive letter
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/standard/string.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/file/basename_bug66395-win32.phpt | 18 |
3 files changed, 20 insertions, 1 deletions
@@ -103,6 +103,7 @@ PHP NEWS - Standard: . Fixed bug #64760 (var_export() does not use full precision for floating-point numbers) (Yasuo) + . Fixed bug #66395 (basename function doesn't remove drive letter). (Anatol) - XMLReader: . Fixed bug #51936 (Crash with clone XMLReader). (Mike) diff --git a/ext/standard/string.c b/ext/standard/string.c index b3860ade5d..bf2df9a612 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1433,7 +1433,7 @@ PHPAPI void php_basename(const char *s, size_t len, char *suffix, size_t sufflen goto quit_loop; case 1: #if defined(PHP_WIN32) || defined(NETWARE) - if (*c == '/' || *c == '\\') { + if (*c == '/' || *c == '\\' || (*c == ':' && (c - s == 1))) { #else if (*c == '/') { #endif diff --git a/ext/standard/tests/file/basename_bug66395-win32.phpt b/ext/standard/tests/file/basename_bug66395-win32.phpt new file mode 100644 index 0000000000..a9580dc09e --- /dev/null +++ b/ext/standard/tests/file/basename_bug66395-win32.phpt @@ -0,0 +1,18 @@ +--TEST-- +basename bug #66395 +--SKIPIF-- +<?php if (substr(PHP_OS, 0, 3) != 'WIN') { die('skip Windows only basename tests'); } ?> +--FILE-- +<?php +echo basename("c:file.txt") . "\n"; +echo basename("d:subdir\\file.txt") . "\n"; +echo basename("y:file.txt", ".txt") . "\n"; +echo basename("notdriveletter:file.txt") . "\n"; +?> +==DONE== +--EXPECTF-- +file.txt +file.txt +file +notdriveletter:file.txt +==DONE== |