Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Critical
-
Resolution: Fixed
-
Affects Version/s: 1.8.6, 1.9.2
-
Component/s: Libraries
-
Labels:None
-
Environment:Windows XP Pro V3 with NTFS file system
-
Affected Branches:MOODLE_18_STABLE, MOODLE_19_STABLE
-
Fixed Branches:MOODLE_18_STABLE, MOODLE_19_STABLE
Description
We recently ran into a problem with check_dir_exists() and having it recursively create directories on Windows. Example call:
$CFG->dataroot = 'C:\xampp/moodledata';
check_dir_exists('C:\xampp/moodledata/path/to/dir', true, true);
What is passed to mkdir:
C:\xampp/moodledata/C:/
C:\xampp/moodledata/C:/xampp/
C:\xampp/moodledata/C:/xampp/moodledata/
C:\xampp/moodledata/C:/xampp/moodledata/path/
C:\xampp/moodledata/C:/xampp/moodledata/path/to/
C:\xampp/moodledata/C:/xampp/moodledata/path/to/dir/
Now, same call with the attached patch:
C:\xampp/moodledata/path/
C:\xampp/moodledata/path/to/
C:\xampp/moodledata/path/to/dir/
Since this method is called everywhere, I don't see how this problem hasn't come up before, which leads me to believe that I'm missing something. I did not experience the problem first hand as I develop on a Mac but as you can see from my simple test above, it is not working as intended.