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

Reply via email to