diff options
| author | Paolo Carlini <pcarlini@unitus.it> | 2003-02-24 21:39:31 +0100 |
|---|---|---|
| committer | Paolo Carlini <paolo@gcc.gnu.org> | 2003-02-24 20:39:31 +0000 |
| commit | 57df94c8f6a7bf0a9e0ccf8bf0d81a4d16514a12 (patch) | |
| tree | a7ad6d88a092d0335e69d0a93702ee68bb891066 /libstdc++-v3/src | |
| parent | 2bac97f7e74adbe7a5a0a966a716f3facd65fb07 (diff) | |
| download | gcc-57df94c8f6a7bf0a9e0ccf8bf0d81a4d16514a12.tar.gz gcc-57df94c8f6a7bf0a9e0ccf8bf0d81a4d16514a12.tar.bz2 gcc-57df94c8f6a7bf0a9e0ccf8bf0d81a4d16514a12.zip | |
re PR libstdc++/9825 (filebuf::sputbackc breaks sbumpc)
2003-02-24 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9825
* src/fstream.cc
(basic_filebuf<char/wchar_t>::_M_underflow_common): When
__bump is true (uflow), always increment the read pointer
(_M_in_cur) before returning successfully.
* testsuite/27_io/filebuf_virtuals.cc (test12): Add.
From-SVN: r63378
Diffstat (limited to 'libstdc++-v3/src')
| -rw-r--r-- | libstdc++-v3/src/fstream.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libstdc++-v3/src/fstream.cc b/libstdc++-v3/src/fstream.cc index 944bae27c38..5753e0055cd 100644 --- a/libstdc++-v3/src/fstream.cc +++ b/libstdc++-v3/src/fstream.cc @@ -53,7 +53,12 @@ namespace std { _M_pback_destroy(); if (_M_in_cur < _M_in_end) - return traits_type::to_int_type(*_M_in_cur); + { + __ret = traits_type::to_int_type(*_M_in_cur); + if (__bump) + _M_in_cur_move(1); + return __ret; + } } // Sync internal and external buffers. @@ -128,7 +133,12 @@ namespace std { _M_pback_destroy(); if (_M_in_cur < _M_in_end) - return traits_type::to_int_type(*_M_in_cur); + { + __ret = traits_type::to_int_type(*_M_in_cur); + if (__bump) + _M_in_cur_move(1); + return __ret; + } } // Sync internal and external buffers. |
