std::istream::get(char*, size_type) doesn't store NUL on failure ---------------------------------------------------------------- Key: STDCXX-60 URL: http://issues.apache.org/jira/browse/STDCXX-60 Project: STDCXX Type: Bug Components: 27. Input/Output Versions: 4.1.2 Environment: all Reporter: Martin Sebor Fix For: 4.1.3 The program below aborts at runtime. According to http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#243, "...if the sentry constructor [of an unformatted input function] exits by throwing an exception or if the sentry object returns false, when converted to a value of type bool, the function returns without attempting to obtain any input. In either case [...] unformatted input functions taking a character array of non-zero size as an argument shall also store a null character (using charT()) in the first location of the array." $ cat t.cpp && nice make t -r && ./t #include #include int main () { std::istringstream strm; strm.setstate (strm.failbit); char s [3] = { 'x', 'y', 'z' }; strm.get (s, 2); assert ('\0' == s [0]); assert ('y' == s [1]); assert ('z' == s [2]); } gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG -pthreads -D_RWSTD_USE_CONFIG -I/build/sebor/gcc-3.4.3-15s/include -I/build/sebor/dev/stdlib/include -I/build/sebor/dev/stdlib/../rwtest -I/build/sebor/dev/stdlib/../rwtest/include -I/build/sebor/dev/stdlib/tests/include -pedantic -nostdinc++ -g -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long t.cpp gcc t.o -o t -L/build/sebor/gcc-3.4.3-15s/rwtest -lrwtest15s -pthreads -L/build/sebor/gcc-3.4.3-15s/lib -lstd15s -lsupc++ -lm Assertion failed: '\0' == s [0], file t.cpp, line 13 Abort (core dumped) -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira