This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
libstdc++/9546: bad exception handling in ostream members
- From: sebor at roguewave dot com
- To: gcc-gnats at gcc dot gnu dot org
- Date: 3 Feb 2003 17:59:55 -0000
- Subject: libstdc++/9546: bad exception handling in ostream members
- Reply-to: sebor at roguewave dot com
>Number: 9546
>Category: libstdc++
>Synopsis: bad exception handling in ostream members
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Feb 03 18:06:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: sebor@roguewave.com
>Release: 3.2.1
>Organization:
>Environment:
>Description:
All formatted and unformatted output functions must catch exceptions thrown from streambuf functions and set badbit. The program below fails (aborts) with 3.2.1. Looking at the code, at least the following functions are not properly dealing with exceptions: write(), flush(), tellp(), and seekp().
Regards
Martin
>How-To-Repeat:
#include <ostream>
#include <streambuf>
struct buf: std::streambuf
{
virtual std::streamsize
xsputn (const char_type*, std::streamsize) {
throw 0;
return 0;
}
};
int main ()
{
buf b;
std::ostream strm (&b);
strm.write ("foo", 3);
return !(strm.bad ());
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: