ID: 25583
Updated by: [EMAIL PROTECTED]
Reported By: d dot stogov at turck dot spb dot eu
-Status: Open
+Status: Assigned
Bug Type: Directory function related
Operating System: Windows
PHP Version: 4.3.3
-Assigned To:
+Assigned To: iliaa
Previous Comments:
------------------------------------------------------------------------
[2003-09-18 04:05:37] d dot stogov at turck dot spb dot eu
Description:
------------
This BUG is Windows releated. PHP thinks what filepathes started form
one slash are relative. The problem comes from IS_ABSOLUTE_PATH definw
which is defined in file "TSRM/tsrm_virtual_cwd.h" line 64.
The original source is
#define IS_ABSOLUTE_PATH(path, len) \
(len >= 2 && ((isalpha(path[0]) && path[1] == ':') ||
(IS_SLASH(path[0]) && IS_SLASH(path[1]))))
but I think it must be changed to
#define IS_ABSOLUTE_PATH(path, len) \
((len >= 2 && isalpha(path[0]) && path[1] == ':') || \
(len >= 1 && IS_SLASH(path[0]) && IS_SLASH(path[1])))
I demonstrate the BUG of the glob() function, but it can occur in any
place where IS_ABSOLUTE_PATH is used.
Reproduce code:
---------------
<?php
function remove_drive($file) {
return substr($file,2);
}
if (substr(PHP_OS,0,3) == WIN) {
$drive = substr(getcwd(),0,2);
$a1 = glob("/*");
$a2 = array_map("remove_drive",glob($drive."/*"));
if ($a1==$a2) {
echo "ok";
} else {
echo "fail";
}
} else {
echo "ok";
}
?>
Expected result:
----------------
ok
Actual result:
--------------
fail
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=25583&edit=1