aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/src
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@unitus.it>2003-02-24 21:39:31 +0100
committerPaolo Carlini <paolo@gcc.gnu.org>2003-02-24 20:39:31 +0000
commit57df94c8f6a7bf0a9e0ccf8bf0d81a4d16514a12 (patch)
treea7ad6d88a092d0335e69d0a93702ee68bb891066 /libstdc++-v3/src
parent2bac97f7e74adbe7a5a0a966a716f3facd65fb07 (diff)
downloadgcc-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.cc14
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.