When compiled with gcc 4.3.1 the program below fails with SIGSEGV: $ cat z.cpp && g++ z.cpp && ./a.out #include <cassert> #include <istream> #include <streambuf>
int main () { static int x = '0'; struct: std::streambuf { // unbuffered, always successfully reads one character int_type underflow () { return x++; } } sb; // "endless" stream that never reaches EOF std::istream endless (&sb); char s [4] = ""; endless.read (s, sizeof s); // expect to extract as many characters as requested assert (endless.good ()); assert (sizeof s == endless.gcount ()); assert ('0' == s [0] && '1' == s [1] && '2' == s [2] && '3' == s [3]); } Segmentation fault -- Summary: SIGSEGV on istream::read() in unbuffered mode Product: gcc Version: 4.3.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: sebor at roguewave dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38476