Skip to content

Commit

Permalink
fs: Fix relative directory creation incongruity with Boost.filesystem
Browse files Browse the repository at this point in the history
The non-BFS version of create_directory_if_missing_recursive() handles
relative path names (e.g. "foo") correctly and doesn't attempt to create
a parent that is left unspecified in the path (i.e. empty), but the BFS
version does, predictably failing the whole operation.

This fixes an issue where `./wesnoth -p data foo` from the source tree
would fail with `error filesystem: Could not create parents to foo` if
`foo` did not already exist, when using the Boost.filesystem-based
implementation. `./wesnoth -p data ./foo` would succeed because there is
a visible parent directory '.' that already exists and needs not be
created again.
  • Loading branch information
irydacea committed Nov 9, 2014
1 parent 124afc0 commit c293e20
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/filesystem_boost.cpp
Expand Up @@ -283,7 +283,7 @@ static bool create_directory_if_missing_recursive(const path& dirpath)
return false;
}

if (create_directory_if_missing_recursive(dirpath.parent_path())) {
if (!dirpath.has_parent_path() || create_directory_if_missing_recursive(dirpath.parent_path())) {
return create_directory_if_missing(dirpath);
} else {
ERR_FS << "Could not create parents to " << dirpath.string() << '\n';
Expand Down

0 comments on commit c293e20

Please sign in to comment.