summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2015-05-21 09:47:30 +0200
committerAnatol Belski <ab@php.net>2015-05-21 09:47:30 +0200
commitfc94fb3e5b91abcbf539643e3b960e02ab1bf180 (patch)
tree746d634e4b4c00e8d3bbd1a6809b5f407e895f5a
parentad4d022bdf23b087b0d2c84e4941706755467d89 (diff)
parentc507c533bd1c34f1c71b4ffd5f14869776533cc3 (diff)
downloadphp-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.phpt49
-rw-r--r--ext/standard/tests/file/glob_variation.phpt3
-rw-r--r--win32/glob.c6
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;