[jira] Updated: (STDCXX-250) std::operator(istream, string) fails to set failbit after it extracts 0 characters

2007-12-19 Thread Farid Zaripov (JIRA)

 [ 
https://issues.apache.org/jira/browse/STDCXX-250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Farid Zaripov updated STDCXX-250:
-

Component/s: (was: 27. Input/Output)
 21. Strings

Component changed to 21.strings (the opertator(istream, string) is related 
to 21.string.io part of the standard).

 std::operator(istream, string) fails to set failbit after it extracts 0 
 characters
 --

 Key: STDCXX-250
 URL: https://issues.apache.org/jira/browse/STDCXX-250
 Project: C++ Standard Library
  Issue Type: Bug
  Components: 21. Strings
Affects Versions: 4.1.2, 4.1.3
 Environment: all
Reporter: Martin Sebor
Assignee: Farid Zaripov
Priority: Minor
 Fix For: 4.2.1

 Attachments: istream.cc.diff


 21.3.7.9, p3 says about the string extractor: If the function extracts no 
 characters, it calls is.setstate(ios::failbit), which may throw 
 ios_base::failure (27.4.4.3). The test program below shows that in 
 unbuffered mode stdcxx fails to do so when an exception is thrown during the 
 third call to underflow().
 $ cat v.cpp  make v  ./v
 #include cassert
 #include cstdio
 #include istream
 #include string
 int main ()
 {
 struct: std::streambuf {
 int_type underflow () {
 static int i = 0;
 // i == 0: sgect() invoked from sentry ctor
 // i == 1: sgetc() invoked from operator()
 // i == 2: sbumpc() invoked from operator()
 return 1  i++ ? throw i : 'x';
 }
 } buf;
 std::istream is (buf);
 std::string s;
 is  s;
 std::printf (state = %c%c%c, string = \%s\ (length %u)\n,
  is.rdstate ()  is.badbit ? 'B' : '-',
  is.rdstate ()  is.eofbit ? 'E' : '-',
  is.rdstate ()  is.failbit ? 'F' : '-',
  s.c_str (), s.size ());
 assert (x == s);
 assert ((is.failbit | is.badbit) == is.rdstate ());
 }
 gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthreads 
 -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include 
 -I/build/sebor/gcc-4.1.0-15s/include -I/build/sebor/dev/stdlib/../rwtest 
 -I/build/sebor/dev/stdlib/../rwtest/include 
 -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -W -Wall 
 -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  v.cpp
 gcc v.o -o v -L/build/sebor/gcc-4.1.0-15s/rwtest -lrwtest15s -pthreads 
 -L/build/sebor/gcc-4.1.0-15s/lib -lstd15s  -lsupc++ -lm
 state = B--, string = x (length 1)
 Assertion failed: (is.failbit | is.badbit) == is.rdstate (), file v.cpp, line 
 30
 Abort (core dumped)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (STDCXX-250) std::operator(istream, string) fails to set failbit after it extracts 0 characters

2007-10-10 Thread Farid Zaripov (JIRA)

 [ 
https://issues.apache.org/jira/browse/STDCXX-250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Farid Zaripov updated STDCXX-250:
-

 Severity: Incorrect Behavior
   Patch Info: [Patch Available]
Fix Version/s: 4.2.1

 std::operator(istream, string) fails to set failbit after it extracts 0 
 characters
 --

 Key: STDCXX-250
 URL: https://issues.apache.org/jira/browse/STDCXX-250
 Project: C++ Standard Library
  Issue Type: Bug
  Components: 27. Input/Output
Affects Versions: 4.1.2, 4.1.3
 Environment: all
Reporter: Martin Sebor
Priority: Minor
 Fix For: 4.2.1

 Attachments: istream.cc.diff


 21.3.7.9, p3 says about the string extractor: If the function extracts no 
 characters, it calls is.setstate(ios::failbit), which may throw 
 ios_base::failure (27.4.4.3). The test program below shows that in 
 unbuffered mode stdcxx fails to do so when an exception is thrown during the 
 third call to underflow().
 $ cat v.cpp  make v  ./v
 #include cassert
 #include cstdio
 #include istream
 #include string
 int main ()
 {
 struct: std::streambuf {
 int_type underflow () {
 static int i = 0;
 // i == 0: sgect() invoked from sentry ctor
 // i == 1: sgetc() invoked from operator()
 // i == 2: sbumpc() invoked from operator()
 return 1  i++ ? throw i : 'x';
 }
 } buf;
 std::istream is (buf);
 std::string s;
 is  s;
 std::printf (state = %c%c%c, string = \%s\ (length %u)\n,
  is.rdstate ()  is.badbit ? 'B' : '-',
  is.rdstate ()  is.eofbit ? 'E' : '-',
  is.rdstate ()  is.failbit ? 'F' : '-',
  s.c_str (), s.size ());
 assert (x == s);
 assert ((is.failbit | is.badbit) == is.rdstate ());
 }
 gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthreads 
 -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include 
 -I/build/sebor/gcc-4.1.0-15s/include -I/build/sebor/dev/stdlib/../rwtest 
 -I/build/sebor/dev/stdlib/../rwtest/include 
 -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -W -Wall 
 -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  v.cpp
 gcc v.o -o v -L/build/sebor/gcc-4.1.0-15s/rwtest -lrwtest15s -pthreads 
 -L/build/sebor/gcc-4.1.0-15s/lib -lstd15s  -lsupc++ -lm
 state = B--, string = x (length 1)
 Assertion failed: (is.failbit | is.badbit) == is.rdstate (), file v.cpp, line 
 30
 Abort (core dumped)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (STDCXX-250) std::operator(istream, string) fails to set failbit after it extracts 0 characters

2007-10-10 Thread Farid Zaripov (JIRA)

 [ 
https://issues.apache.org/jira/browse/STDCXX-250?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Farid Zaripov updated STDCXX-250:
-

Attachment: istream.cc.diff

The patch is attached.

 std::operator(istream, string) fails to set failbit after it extracts 0 
 characters
 --

 Key: STDCXX-250
 URL: https://issues.apache.org/jira/browse/STDCXX-250
 Project: C++ Standard Library
  Issue Type: Bug
  Components: 27. Input/Output
Affects Versions: 4.1.2, 4.1.3
 Environment: all
Reporter: Martin Sebor
Priority: Minor
 Fix For: 4.2.1

 Attachments: istream.cc.diff


 21.3.7.9, p3 says about the string extractor: If the function extracts no 
 characters, it calls is.setstate(ios::failbit), which may throw 
 ios_base::failure (27.4.4.3). The test program below shows that in 
 unbuffered mode stdcxx fails to do so when an exception is thrown during the 
 third call to underflow().
 $ cat v.cpp  make v  ./v
 #include cassert
 #include cstdio
 #include istream
 #include string
 int main ()
 {
 struct: std::streambuf {
 int_type underflow () {
 static int i = 0;
 // i == 0: sgect() invoked from sentry ctor
 // i == 1: sgetc() invoked from operator()
 // i == 2: sbumpc() invoked from operator()
 return 1  i++ ? throw i : 'x';
 }
 } buf;
 std::istream is (buf);
 std::string s;
 is  s;
 std::printf (state = %c%c%c, string = \%s\ (length %u)\n,
  is.rdstate ()  is.badbit ? 'B' : '-',
  is.rdstate ()  is.eofbit ? 'E' : '-',
  is.rdstate ()  is.failbit ? 'F' : '-',
  s.c_str (), s.size ());
 assert (x == s);
 assert ((is.failbit | is.badbit) == is.rdstate ());
 }
 gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthreads 
 -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include 
 -I/build/sebor/gcc-4.1.0-15s/include -I/build/sebor/dev/stdlib/../rwtest 
 -I/build/sebor/dev/stdlib/../rwtest/include 
 -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -W -Wall 
 -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  v.cpp
 gcc v.o -o v -L/build/sebor/gcc-4.1.0-15s/rwtest -lrwtest15s -pthreads 
 -L/build/sebor/gcc-4.1.0-15s/lib -lstd15s  -lsupc++ -lm
 state = B--, string = x (length 1)
 Assertion failed: (is.failbit | is.badbit) == is.rdstate (), file v.cpp, line 
 30
 Abort (core dumped)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.



[jira] Updated: (STDCXX-250) std::operator(istream, string) fails to set failbit after it extracts 0 characters

2006-06-30 Thread Martin Sebor (JIRA)
 [ http://issues.apache.org/jira/browse/STDCXX-250?page=all ]

Martin Sebor updated STDCXX-250:


Summary: std::operator(istream, string) fails to set failbit after it 
extracts 0 characters  (was: std::operator.(istream, string) fails to set 
failbit after it extracts 0 characters)

 std::operator(istream, string) fails to set failbit after it extracts 0 
 characters
 --

  Key: STDCXX-250
  URL: http://issues.apache.org/jira/browse/STDCXX-250
  Project: C++ Standard Library
 Type: Bug

   Components: 27. Input/Output
 Versions: 4.1.2, 4.1.3
  Environment: all
 Reporter: Martin Sebor
 Priority: Minor


 21.3.7.9, p3 says about the string extractor: If the function extracts no 
 characters, it calls is.setstate(ios::failbit), which may throw 
 ios_base::failure (27.4.4.3). The test program below shows that in 
 unbuffered mode stdcxx fails to do so when an exception is thrown during the 
 third call to underflow().
 $ cat v.cpp  make v  ./v
 #include cassert
 #include cstdio
 #include istream
 #include string
 int main ()
 {
 struct: std::streambuf {
 int_type underflow () {
 static int i = 0;
 // i == 0: sgect() invoked from sentry ctor
 // i == 1: sgetc() invoked from operator()
 // i == 2: sbumpc() invoked from operator()
 return 1  i++ ? throw i : 'x';
 }
 } buf;
 std::istream is (buf);
 std::string s;
 is  s;
 std::printf (state = %c%c%c, string = \%s\ (length %u)\n,
  is.rdstate ()  is.badbit ? 'B' : '-',
  is.rdstate ()  is.eofbit ? 'E' : '-',
  is.rdstate ()  is.failbit ? 'F' : '-',
  s.c_str (), s.size ());
 assert (x == s);
 assert ((is.failbit | is.badbit) == is.rdstate ());
 }
 gcc -c -I/build/sebor/dev/stdlib/include/ansi -D_RWSTDDEBUG   -pthreads 
 -D_RWSTD_USE_CONFIG -I/build/sebor/dev/stdlib/include 
 -I/build/sebor/gcc-4.1.0-15s/include -I/build/sebor/dev/stdlib/../rwtest 
 -I/build/sebor/dev/stdlib/../rwtest/include 
 -I/build/sebor/dev/stdlib/tests/include  -pedantic -nostdinc++ -g  -W -Wall 
 -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long  v.cpp
 gcc v.o -o v -L/build/sebor/gcc-4.1.0-15s/rwtest -lrwtest15s -pthreads 
 -L/build/sebor/gcc-4.1.0-15s/lib -lstd15s  -lsupc++ -lm
 state = B--, string = x (length 1)
 Assertion failed: (is.failbit | is.badbit) == is.rdstate (), file v.cpp, line 
 30
 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