[ https://issues.apache.org/jira/browse/STDCXX-1026?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Martin Sebor resolved STDCXX-1026. ---------------------------------- Resolution: Fixed Fixed in [r723461 | http://svn.apache.org/viewvc?rev=723461&view=rev]. Test passes. Will close after merging out to 4.3.0 and trunk. > sgetn() fails to extract characters from an unbuffered stream > ------------------------------------------------------------- > > Key: STDCXX-1026 > URL: https://issues.apache.org/jira/browse/STDCXX-1026 > Project: C++ Standard Library > Issue Type: Bug > Components: 27. Input/Output > Affects Versions: 4.2.1 > Reporter: Martin Sebor > Assignee: Martin Sebor > Fix For: 4.2.2 > > Original Estimate: 2h > Time Spent: 2h > Remaining Estimate: 0h > > This bug was uncovered in this [discussion | > http://forums.sun.com/thread.jspa?messageID=10532349]: > {noformat} > $ cat t.cpp && make t && ./t > #include <cassert> > #include <istream> > #include <streambuf> > int main () > { > static int x = '0'; > struct: std::streambuf { > // unbuffered, always successfully reads one character > int_type underflow () { return x++; } > } sb; > // "endless" stream that never reaches EOF > std::istream endless (&sb); > char s [4] = ""; > endless.read (s, sizeof s); > > // expect to extract as many characters as requested > assert (endless.good ()); > assert (sizeof s == endless.gcount ()); > assert ('0' == s [0] && '1' == s [1] && '2' == s [2] && '3' == s [3]); > > } > gcc -c -I/home/sebor/stdcxx-4.2.1/include/ansi \ > -I/home/sebor/stdcxx-4.2.1/include \ > -I/build/sebor/stdcxx-4.2.1-gcc-4.3.0-8D/include \ > -I/home/sebor/stdcxx-4.2.1/examples/include \ > -pedantic -nostdinc++ -O2 -W -Wall \ > -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long > -Wcast-align t.cpp > t.cpp: In function 'int main()': > t.cpp:9: warning: inlining failed in call to 'virtual main()::<anonymous > struct>::~._26()': call is unlikely and code size would grow > t.cpp:24: warning: called from here > t.cpp:9: warning: inlining failed in call to 'virtual main()::<anonymous > struct>::~._26()': call is unlikely and code size would grow > t.cpp:24: warning: called from here > gcc t.o -o t -L/build/sebor/stdcxx-4.2.1-gcc-4.3.0-8D/lib > -Wl,-R/build/sebor/stdcxx-4.2.1-gcc-4.3.0-8D/lib -lstd8D -lsupc++ -lm > t: t.cpp:22: int main(): Assertion `endless.good ()' failed. > Aborted > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.