From mboxrd@z Thu Jan 1 00:00:00 1970 From: brendan@zen.org To: gcc-gnats@gcc.gnu.org Subject: libstdc++/4545: basic_ostream op<< should set badbit, not failbit Date: Thu, 11 Oct 2001 08:26:00 -0000 Message-id: <20011011152243.26075.qmail@sourceware.cygnus.com> X-SW-Source: 2001-10/msg00227.html List-Id: >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 * 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; }