diff --git a/libcxx/include/ios b/libcxx/include/ios --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -781,6 +781,8 @@ _CharT basic_ios<_CharT, _Traits>::fill(char_type __ch) { + if (traits_type::eq_int_type(traits_type::eof(), __fill_)) + __fill_ = widen(' '); char_type __r = __fill_; __fill_ = __ch; return __r; diff --git a/libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/fill_char_type.pass.cpp b/libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/fill_char_type.pass.cpp --- a/libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/fill_char_type.pass.cpp +++ b/libcxx/test/std/input.output/iostreams.base/ios/basic.ios.members/fill_char_type.pass.cpp @@ -20,7 +20,6 @@ int main(int, char**) { std::ios ios(0); - assert(ios.fill() == ' '); char c = ios.fill('*'); assert(c == ' '); assert(ios.fill() == '*');