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