diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2011-02-28 23:50:57 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2011-02-28 23:50:57 +0000 |
commit | 1139a7354d6818da06edf5227ef6c12c08289b91 (patch) | |
tree | ee95f0e866d1d1bafe977f8e5861e6f678607891 /libstdc++-v3/include/std/streambuf | |
parent | 6dfef9cca7628d454ed535736f9d063a7d45911d (diff) | |
download | gcc-1139a7354d6818da06edf5227ef6c12c08289b91.zip gcc-1139a7354d6818da06edf5227ef6c12c08289b91.tar.gz gcc-1139a7354d6818da06edf5227ef6c12c08289b91.tar.bz2 |
re PR libstdc++/47921 (pbump will overflow when input n is larger than 2G-1)
2011-02-28 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/47921
* include/std/streambuf (basic_streambuf<>::__safe_gbump,
__safe_pbump): Add.
* include/bits/streambuf.tcc (basic_streambuf<>::xgetn,
xputn): Use the latter.
* include/bits/streambuf_iterator.h: Likewise.
* src/strstream.cc: Likewise.
* src/streambuf.cc: Likewise.
* src/compatibility.cc: Likewise.
* src/istream.cc: Likewise.
* include/bits/fstream.tcc (basic_filebuf<>::xsgetn): Use setg
instead of gbump.
* include/std/sstream (basic_stringbuf<>::_M_pbump): Add.
* include/bits/sstream.tcc (basic_stringbuf<>::seekoff,
seekpos, _M_sync): Use setg, setp, and _M_pbump.
* config/abi/pre/gnu.ver: Tweak.
From-SVN: r170579
Diffstat (limited to 'libstdc++-v3/include/std/streambuf')
-rw-r--r-- | libstdc++-v3/include/std/streambuf | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libstdc++-v3/include/std/streambuf b/libstdc++-v3/include/std/streambuf index 0121ac2..b46efec 100644 --- a/libstdc++-v3/include/std/streambuf +++ b/libstdc++-v3/include/std/streambuf @@ -769,6 +769,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } #endif + // Also used by specializations for char and wchar_t in src. + void + __safe_gbump(streamsize __n) { _M_in_cur += __n; } + + void + __safe_pbump(streamsize __n) { _M_out_cur += __n; } + private: // _GLIBCXX_RESOLVE_LIB_DEFECTS // Side effect of DR 50. |