stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <j...@apache.org>
Subject [jira] Created: (STDCXX-60) std::istream::get(char*, size_type) doesn't store NUL on failure
Date Thu, 27 Oct 2005 21:37:56 GMT
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


Mime
View raw message