The create_dir helper was calling the throwing form of
filesystem::is_directory instead of passing the error_code argument.
Since std::filesystem::create_directory(const path&, error_code&) is
noexcept, it would call std::terminate if an error occurred in
is_directory.
Passing the error_code also takes care of clearing it in the case where
is_directory returns true.
Backport from mainline
2018-03-09 Jonathan Wakely <jwakely@redhat.com>
src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
From-SVN: r262413
2018-07-04 Jonathan Wakely <jwakely@redhat.com>
+ Backport from mainline
+ 2018-03-09 Jonathan Wakely <jwakely@redhat.com>
+
+ src/filesystem/ops.cc (create_dir): Pass error_code to is_directory.
+
Backport from mainline
2018-06-18 Jonathan Wakely <jwakely@redhat.com>
if (::mkdir(p.c_str(), mode))
{
const int err = errno;
- if (err != EEXIST || !is_directory(p))
+ if (err != EEXIST || !is_directory(p, ec))
ec.assign(err, std::generic_category());
- else
- ec.clear();
}
else
{