diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b7888311301..926973d2ea8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2003-04-26 Paolo Carlini + + * include/bits/fstream.tcc (pbackfail): Shorten a bit (10 lines) + the innermost 'if' by factoring out some code. + 2003-04-26 Paolo Carlini * include/bits/streambuf.tcc (__copy_streambufs): Don't diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 7a8ae3b2d5a..454660d5768 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -203,27 +203,17 @@ namespace std const bool __testout = this->_M_mode & ios_base::out; const bool __testeq = traits_type::eq(__c, this->_M_in_cur[-1]); + --this->_M_in_cur; + if (__testout) + --this->_M_out_cur; // Try to put back __c into input sequence in one of three ways. // Order these tests done in is unspecified by the standard. if (!__testeof && __testeq) - { - --this->_M_in_cur; - if (__testout) - --this->_M_out_cur; - __ret = __i; - } + __ret = __i; else if (__testeof) + __ret = traits_type::not_eof(__i); + else { - --this->_M_in_cur; - if (__testout) - --this->_M_out_cur; - __ret = traits_type::not_eof(__i); - } - else if (!__testeof) - { - --this->_M_in_cur; - if (__testout) - --this->_M_out_cur; _M_pback_create(); *this->_M_in_cur = __c; __ret = __i;