diff options
author | Anatol Belski <ab@php.net> | 2015-05-21 09:47:30 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-05-21 09:47:30 +0200 |
commit | fc94fb3e5b91abcbf539643e3b960e02ab1bf180 (patch) | |
tree | 746d634e4b4c00e8d3bbd1a6809b5f407e895f5a | |
parent | ad4d022bdf23b087b0d2c84e4941706755467d89 (diff) | |
parent | c507c533bd1c34f1c71b4ffd5f14869776533cc3 (diff) | |
download | php-git-fc94fb3e5b91abcbf539643e3b960e02ab1bf180.tar.gz |
Merge branch 'PHP-5.5' into PHP-5.6
* PHP-5.5:
updated NEWS
added missing GLOB_BRACE support check
added SKIPIF section to test to make sure that GLOB_BRACE is supported
fix #69628: complex GLOB_BRACE fails on Windows
added PHPT to check for bug #69628
-rw-r--r-- | ext/standard/tests/file/bug69628.phpt | 49 | ||||
-rw-r--r-- | ext/standard/tests/file/glob_variation.phpt | 3 | ||||
-rw-r--r-- | win32/glob.c | 6 |
3 files changed, 56 insertions, 2 deletions
diff --git a/ext/standard/tests/file/bug69628.phpt b/ext/standard/tests/file/bug69628.phpt new file mode 100644 index 0000000000..7e18619a3e --- /dev/null +++ b/ext/standard/tests/file/bug69628.phpt @@ -0,0 +1,49 @@ +--TEST-- +Bug #69628: GLOB_BRACE with multiple brackets within the braces fails +--SKIPIF-- +<?php +if (!defined('GLOB_BRACE')) { + die('skip this test requires GLOB_BRACE support'); +} +?> +--FILE-- +<?php + +$file_path = dirname(__FILE__); + +// temp dirname used here +$dirname = "$file_path/bug69628"; + +// temp dir created +mkdir($dirname); + +// temp files created +file_put_contents("$dirname/image.jPg", ''); +file_put_contents("$dirname/image.gIf", ''); +file_put_contents("$dirname/image.png", ''); + +sort_var_dump(glob("$dirname/*.{[jJ][pP][gG],[gG][iI][fF]}", GLOB_BRACE)); + +function sort_var_dump($results) { + sort($results); + var_dump($results); +} + +?> +--CLEAN-- +<?php + +$file_path = dirname(__FILE__); +unlink("$file_path/bug69628/image.jPg"); +unlink("$file_path/bug69628/image.gIf"); +unlink("$file_path/bug69628/image.png"); +rmdir("$file_path/bug69628/"); + +?> +--EXPECTF-- +array(2) { + [0]=> + string(%d) "%s/bug69628/image.gIf" + [1]=> + string(%d) "%s/bug69628/image.jPg" +} diff --git a/ext/standard/tests/file/glob_variation.phpt b/ext/standard/tests/file/glob_variation.phpt index 00fd6ff3ed..9d3b879379 100644 --- a/ext/standard/tests/file/glob_variation.phpt +++ b/ext/standard/tests/file/glob_variation.phpt @@ -5,6 +5,9 @@ Test glob() function: usage variations if (substr(PHP_OS, 0, 3) == 'WIN') { die('skip.. Not valid for Windows'); } +if (!defined('GLOB_BRACE')) { + die('skip this test requires GLOB_BRACE support'); +} ?> --FILE-- <?php diff --git a/win32/glob.c b/win32/glob.c index 8111daba1c..a61c4f3ef0 100644 --- a/win32/glob.c +++ b/win32/glob.c @@ -293,17 +293,19 @@ globexp2(ptr, pattern, pglob, rv) } for (i = 0, pl = pm = ptr; pm <= pe; pm++) { + const Char *pb; + switch (*pm) { case LBRACKET: /* Ignore everything between [] */ - for (pl = pm++; *pm != RBRACKET && *pm != EOS; pm++) + for (pb = pm++; *pm != RBRACKET && *pm != EOS; pm++) ; if (*pm == EOS) { /* * We could not find a matching RBRACKET. * Ignore and just look for RBRACE */ - pm = pl; + pm = pb; } break; |