From: Nathan Myers Date: Tue, 14 Sep 2004 19:11:46 +0000 (+0000) Subject: fstream.tcc (xsgetn): Slightly tweak the recent fix for 11722... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d1768069410858ba003f30461ec95198d25a43ae;p=gcc.git fstream.tcc (xsgetn): Slightly tweak the recent fix for 11722... 2004-09-14 Nathan Myers * include/bits/fstream.tcc (xsgetn): Slightly tweak the recent fix for 11722: copy can replace move; the common case is __avail == 0. From-SVN: r87501 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 79919512177..8b52da2c9e4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2004-09-14 Nathan Myers + + * include/bits/fstream.tcc (xsgetn): Slightly tweak the recent fix + for 11722: copy can replace move; the common case is __avail == 0. + 2004-09-14 Paolo Carlini * include/bits/cpp_type_traits.h: Rename __is_trivially_copyable diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 542dc6e8bc4..c24d4cac49f 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -524,14 +524,17 @@ namespace std { // First, copy the chars already present in the buffer. const streamsize __avail = this->egptr() - this->gptr(); - if (__avail == 1) - *__s = *this->gptr(); - else if (__avail > 1) - traits_type::move(__s, this->gptr(), __avail); - __s += __avail; - this->gbump(__avail); - __ret += __avail; - __n -= __avail; + if (__avail != 0) + { + if (__avail == 1) + *__s = *this->gptr(); + else if (__avail > 1) + traits_type::copy(__s, this->gptr(), __avail); + __s += __avail; + this->gbump(__avail); + __ret += __avail; + __n -= __avail; + } const streamsize __len = _M_file.xsgetn(reinterpret_cast(__s), __n);