libstdc++/4545: basic_ostream op<< should set badbit, not failbit
brendan@zen.org
brendan@zen.org
Thu Oct 11 08:26:00 GMT 2001
>Number: 4545
>Category: libstdc++
>Synopsis: basic_ostream op<< should set badbit, not failbit
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Oct 11 08:26:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Brendan Kehoe
>Release: CVS tree
>Organization:
>Environment:
>Description:
I was mistaken in one piece that I submitted in PR libstdc++/4536.
Rather, according to $27.6.2.5.3(6) the operator
basic_ostream::operator<<(streambuf*)
should tset badbit, not failbit, if __sbin or __xtrct is set to 0.
>How-To-Repeat:
>Fix:
In attached patch, do setstate of ios_base::badbit instead of ios_base::failbit.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="diffs-ostream-2.txt"
Content-Disposition: inline; filename="diffs-ostream-2.txt"
2001-08-02 Brendan Kehoe <brendan@zen.org>
* include/bits/ostream.tcc (basic_ostream::op<<(streambuf*)): If
__sbin or __xtrct are 0, set badbit, not failbit, per
$27.6.2.5.3(6).
*** bits/ostream.tcc.~1~ Wed Jul 18 19:19:42 2001
--- bits/ostream.tcc Thu Oct 11 14:59:02 2001
*************** namespace std
*** 347,351 ****
__xtrct = __copy_streambufs(*this, __sbin, __sbout);
if (!__sbin || !__xtrct)
! this->setstate(ios_base::failbit);
return *this;
}
--- 347,351 ----
__xtrct = __copy_streambufs(*this, __sbin, __sbout);
if (!__sbin || !__xtrct)
! this->setstate(ios_base::badbit);
return *this;
}
More information about the Gcc-bugs
mailing list