[prev in list] [next in list] [prev in thread] [next in thread]
List: apache-stdcxx-dev
Subject: [jira] Created: (STDCXX-60) std::istream::get(char*, size_type) doesn't store NUL on failure
From: "Martin Sebor (JIRA)" <jira () apache ! org>
Date: 2005-10-27 21:37:56
Message-ID: 234765254.1130449076346.JavaMail.jira () ajax ! apache ! org
[Download RAW message or body]
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 <cassert>
#include <sstream>
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
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic