------- Comment #6 from fp at mc dot com  2009-06-10 12:50 -------
Jonathan,

thank you for identifying the bug in my original code.

According to my copy of ISO 14992:1998, std::iostream does not have a default
constructor.  However, my reading of the standard leads me to believe that it
is valid to pass a null pointer.  The description for basic_ios::init()
(27.4.4.1) says that, as a postcondition, rdstate() is "goodbit if sb is not a
null pointer, otherwise badbit".

libstdc++ does provide a default constructor for std::iostream.

However, either way, passing a null std::streambuf pointer to std::iostream
(which I believe is valid), or calling the "gcc extension" default constructor,
both still lead to a crash.

I've looked at the source code for std::iostream and its base classes and it
does not appear to dereference sb, it merely assigns the pointer to a meber
variable and tests it for non-null.

I am updating the test case.

Can someone please do me a favor and test this with a more current version of
gcc?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40391

Reply via email to