DirAccessPack
: Fix file_exists
and dir_exists
in exported projects
#98483
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #87552
The
fix_path()
calls were added in #31440 as a hotfix for a similar problem.At that time,
dir_exists()
simply checks if the given path is a key of thesubdirs
map of the current directory. That's whydir_exists()
did not work for absolute paths and usingfix_path()
to stripres://
prefix solved the problem.In 4.0, #40748 improved the
DirAccessPack
API with a better way to find subdirectories:_find_dir()
. This method supports both relative and absolute paths. But sincefix_path()
is still called for the incoming parameters, absolute paths always become relative paths, so it might be checking the wrong directory depending on the current directory ofDirAccess
.