diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0848e64d020..b64a1547aee 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2003-06-03 Benjamin Kosnik + + * include/bits/fstream.tcc (pbackfail): Make a rarely taken + 'if' branch less obscure. + 2003-06-02 Andrew Pinski PR libstdc++/9815 diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index e84eee04efd..e4119bfcff2 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -284,9 +284,13 @@ namespace std // But the seek may fail (f.i., at the beginning of // a file, see libstdc++/9439) and in that case // we return traits_type::eof(). - else if (this->seekoff(-1, ios_base::cur) < 0 - || traits_type::eq_int_type(__tmp = this->underflow(), - traits_type::eof())) + else if (this->seekoff(-1, ios_base::cur) >= 0) + { + __tmp = this->underflow(); + if (traits_type::eq_int_type(__tmp, __ret)) + return __ret; + } + else return __ret; // Try to put back __i into input sequence in one of three ways.