Merge branch 'pull-request/1278'

This commit is contained in:
Anatol Belski 2015-05-21 08:52:41 +02:00
commit eef762d576
3 changed files with 56 additions and 2 deletions

View File

@ -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"
}

View File

@ -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

View File

@ -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;