
Hi Beman,
== openmode differences for path/wpath
I ran into a few calls where fs::ofstreams where opened in binary mode, but the std::ios_base::out flag wasn't specified. This worked fine for
paths,
but for wpaths this was giving asserts as the narrow_path() function specifically checks for this flag.
Good catch. CVS has been changed to OR in the correct flag. The problem also affected ifstreams and fstreams.
I've just checked with the latest CVS and the test_out_mode_wide() case (see below) still fails (on windows). The file is not created. In fstream.hpp(369) a call is made to detail::path_proxy with a mode parameter without the std::ios_base_out flag. This flag is checked in fstream.hpp(57). --- snip template<typename Path> void test_no_out_mode(Path const& p) { fs::remove(p); fs::ofstream str(p, std::ios_base::binary); BOOST_CHECK(!!str); BOOST_CHECK(fs::exists(p)); } void test_out_mode_narrow() { test_no_out_mode(fs::path("new_file_narrow")); } void test_out_mode_wide() { test_no_out_mode(fs::wpath(L"new_file_wide")); } filesystem_unit.cpp(33): error in "filesystem_test::test_out_mode_wide": heck !!str failed filesystem_unit.cpp(34): error in "filesystem_test::test_out_mode_wide": heck fs::exists(p) failed --- snip Regards, Arjen