basic_ostream<_CharT, _Traits>::operator<<(__streambuf_type* __sbin)
{
sentry __cerb(*this);
- if (__cerb)
+ if (__cerb && __sbin)
{
try
{
- streamsize __xtrct = 0;
- if (__sbin)
- {
- __streambuf_type* __sbout = this->rdbuf();
- __xtrct = __copy_streambufs(*this, __sbin, __sbout);
- }
- else
- this->setstate(ios_base::badbit);
- if (!__xtrct)
+ if (!__copy_streambufs(*this, __sbin, this->rdbuf()))
this->setstate(ios_base::failbit);
}
catch(exception& __fail)
__throw_exception_again;
}
}
+ else if (!__sbin)
+ this->setstate(ios_base::badbit);
return *this;
}
{
typedef basic_ostream<_CharT, _Traits> __ostream_type;
typename __ostream_type::sentry __cerb(__out);
- if (__cerb)
+ if (__cerb && __s)
{
try
{
streamsize __w = __out.width();
_CharT* __pads = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * __w));
- streamsize __len = __s
- ? static_cast<streamsize>(_Traits::length(__s)) : 0;
+ streamsize __len = static_cast<streamsize>(_Traits::length(__s));
if (__w > __len)
{
__pad(__out, __out.fill(), __pads, __s, __w, __len, false);
}
__out.write(__s, __len);
__out.width(0);
- if (!__len)
- __out.setstate(ios_base::badbit);
}
catch(exception& __fail)
{
__throw_exception_again;
}
}
+ else if (!__s)
+ __out.setstate(ios_base::badbit);
return __out;
}
typedef char_traits<char> __traits_type;
#endif
typename __ostream_type::sentry __cerb(__out);
- if (__cerb)
+ if (__cerb && __s)
{
- size_t __clen = __s ? __traits_type::length(__s) : 0;
+ size_t __clen = __traits_type::length(__s);
_CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT) * (__clen + 1)));
for (size_t __i = 0; __i < __clen; ++__i)
__ws[__i] = __out.widen(__s[__i]);
}
__out.write(__str, __len);
__out.width(0);
- if (!__len)
- __out.setstate(ios_base::badbit);
}
catch(exception& __fail)
{
__throw_exception_again;
}
}
+ else if (!__s)
+ __out.setstate(ios_base::badbit);
return __out;
}
{
typedef basic_ostream<char, _Traits> __ostream_type;
typename __ostream_type::sentry __cerb(__out);
- if (__cerb)
+ if (__cerb && __s)
{
try
{
streamsize __w = __out.width();
char* __pads = static_cast<char*>(__builtin_alloca(__w));
- streamsize __len = __s ?
- static_cast<streamsize>(_Traits::length(__s)) : 0;
+ streamsize __len = static_cast<streamsize>(_Traits::length(__s));
+
if (__w > __len)
{
__pad(__out, __out.fill(), __pads, __s, __w, __len, false);
}
__out.write(__s, __len);
__out.width(0);
- if (!__len)
- __out.setstate(ios_base::badbit);
}
catch(exception& __fail)
{
__throw_exception_again;
}
}
+ else if (!__s)
+ __out.setstate(ios_base::badbit);
return __out;
}
// 1999-08-16 bkoz
// 1999-11-01 bkoz
-// Copyright (C) 1999, 2000, 2001 Free Software Foundation
+// Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
f_out1 << strbuf01;
state02 = f_out1.rdstate();
VERIFY( state01 != state02 );
- VERIFY( (state02 & std::ios_base::failbit) != 0 );
+ VERIFY( (state02 & std::ios_base::badbit) != 0 );
// filebuf->filebuf
std::ifstream f_in(name_01);