g++ (or libstdc++ to be more exact) failed on the following simple testcase:

#include <iostream>
#include <fstream>
#include <cstdlib>

int main()
{
  try {
    const size_t bufsize = 2252778560;
    char* buf = new char[bufsize];
    std::memset(buf, 0x22, bufsize);
    std::ofstream o("test.data");
    o.write(buf, bufsize);
    if (o.fail()) {
      std::cerr << " write failed, rdstate: " << o.rdstate() << std::endl;
      if (o.bad()) {
        std::cerr << "bad\n";
      }
    }
  }
  catch (...) {
    std::cerr << "exception!\n";
  }
}


output of the program :

./a.out
 write failed, rdstate: 1 bad

when it was compiled with g++ 4.1.2 

with g++ 3.2.3 the test works fine

sample compiler invocation:

/gcc/v4.1.2p1/bin/g++ -m64  test_write.cpp


-- 
           Summary: file stream error writing large buffers
           Product: gcc
           Version: 4.1.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: satyaakam at yahoo dot co dot in


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

Reply via email to