[
https://issues.apache.org/jira/browse/STDCXX-60?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Sebor closed STDCXX-60.
------------------------------
Regression test added in
[r650352|http://svn.apache.org/viewvc?rev=650352&view=rev].
> std::istream::get(char*, size_type) doesn't store NUL on failure
> ----------------------------------------------------------------
>
> Key: STDCXX-60
> URL: https://issues.apache.org/jira/browse/STDCXX-60
> Project: C++ Standard Library
> Issue Type: Bug
> Components: 27. Input/Output
> Affects Versions: 4.1.2
> Environment: all
> Reporter: Martin Sebor
> Assignee: 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.
-
You can reply to this email to add a comment to the issue online.