aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/std/streambuf
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-02-28 23:50:57 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-02-28 23:50:57 +0000
commit1139a7354d6818da06edf5227ef6c12c08289b91 (patch)
treeee95f0e866d1d1bafe977f8e5861e6f678607891 /libstdc++-v3/include/std/streambuf
parent6dfef9cca7628d454ed535736f9d063a7d45911d (diff)
downloadgcc-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/streambuf7
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.