Details
Description
The patch for QTBUG-30046 killed mkpath for Windows as soon as any part of the directory you want to create already exists but you have no permissions.
See comment on the old issue:
I think that change killed mkpath for Windows as soon as there is any directory on the way to the one you want to create that already exists but for which you have no permissions to create it.
In some rare cases, Windows reports then ERROR_ACCESS_DENIED, instead of ERROR_ALREADY_EXISTS.
The old code had no problem, as the directory part did exist and only that was checked first and no mkDir was tried.
Now it will just fail, making mkpath even for stuff in C:\Users\<xxx> unusable per default, e.g. our application can't create its local data dirs.
Hints that ERROR_ACCESS_DENIED can happen:
http://stackoverflow.com/questions/3570618/what-causes-createdirectory-to-return-error-access-denied
http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/57f8ef8d-87ad-455b-8ed9-9a0d88bae960/createdirectory-returns-erroraccessdenied-on-vista-with-uac-enabled
This should be a known issue for 5.1, as a lot of stuff won't work that way.
Attachments
Issue Links
- is required for
-
QTBUG-32183 Issues to be fixed in 5.1.1 (next patch release)
- Closed
- relates to
-
QTBUG-32414 QDir::mkpath fails on Solaris NFS mounts
- Reported
- replaces
-
QTBUG-34046 QDir::mkpath regression
- Closed
- resulted from
-
QTBUG-30046 Race condition in QDir::mkpath / QFileSystemEngine::createDirectory
- Closed
For Gerrit Dashboard: QTBUG-32314 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
60883,1 | QDir::mkpath shouldn't fail if parent directory denies access | stable | qt/qtbase | Status: MERGED | +2 | 0 |