Bug #79990 [Opn->Dup]: glob() returns duplicate values

From: Date: Tue, 18 Aug 2020 15:19:30 +0000
Subject: Bug #79990 [Opn->Dup]: glob() returns duplicate values
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-228646@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79990&edit=1

 ID:                 79990
 Updated by:         cmb@php.net
 Reported by:        bonzura at yahoo dot co dot jp
 Summary:            glob() returns duplicate values
-Status:             Open
+Status:             Duplicate
 Type:               Bug
 Package:            Filesystem function related
 Operating System:   Windows10
 PHP Version:        7.4.9
-Assigned To:        
+Assigned To:        cmb
 Block user comment: N
 Private report:     N

 New Comment:

This is a duplicate of bug #36365.  The fix for that bug cannot be
backported, because it breaks the ABI.


Previous Comments:
------------------------------------------------------------------------
[2020-08-18 14:58:58] bonzura at yahoo dot co dot jp

Description:
------------
glob() returns duplicate values ​​when the number of files is 65534 or more.

It occurs only in Windows PHP ver 7.4.9 or earlier, not in 8.0 or Linux.

When number of files increase, duplicate values also increase.

When I tried Test script $max=1000000, result is below.
--------
1000015
Duplicated test/0000065534.txt->2
Duplicated test/0000131069.txt->2
Duplicated test/0000196604.txt->2
Duplicated test/0000262139.txt->2
Duplicated test/0000327674.txt->2
Duplicated test/0000393209.txt->2
Duplicated test/0000458744.txt->2
Duplicated test/0000524279.txt->2
Duplicated test/0000589814.txt->2
Duplicated test/0000655349.txt->2
Duplicated test/0000720884.txt->2
Duplicated test/0000786419.txt->2
Duplicated test/0000851954.txt->2
Duplicated test/0000917489.txt->2
Duplicated test/0000983024.txt->2


Test script:
---------------
<?php
$max=65534;
$dir='test/';
for ($i=1;$i<=$max;$i++){
    file_put_contents($dir.sprintf("%010d",$i).".txt",$i);
}

$files=glob($dir."*");
echo count($files)."\n";

$check=array_count_values($files);
foreach ($check as $key=>$value){
	if ($value!=1){
		echo "Duplicated ".$key."->".$value."\n";
	}
}
?>

Expected result:
----------------
65534

Actual result:
--------------
65535
Duplicated test/0000065534.txt->2


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=79990&edit=1


Thread (2 messages)

« previous php.bugs (#228646) next »