summaryrefslogtreecommitdiffstats
path: root/contrib/libc++/include/istream
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2013-04-27 22:47:52 +0000
committerdim <dim@FreeBSD.org>2013-04-27 22:47:52 +0000
commit815a6cc1e325a4e8596b91756039a7d699471b11 (patch)
treee5a6a26d0973c6968273f6fabb61cb3d624be555 /contrib/libc++/include/istream
parent1497a98f71419ff66d08ad2b8c90530e65521ac2 (diff)
downloadFreeBSD-src-815a6cc1e325a4e8596b91756039a7d699471b11.zip
FreeBSD-src-815a6cc1e325a4e8596b91756039a7d699471b11.tar.gz
Merge libc++ trunk r180598. Contains several minor cleanups and bug
fixes, no major changes. MFC after: 2 weeks
Diffstat (limited to 'contrib/libc++/include/istream')
-rw-r--r--contrib/libc++/include/istream21
1 files changed, 7 insertions, 14 deletions
diff --git a/contrib/libc++/include/istream b/contrib/libc++/include/istream
index 3979e14..3f629f6 100644
--- a/contrib/libc++/include/istream
+++ b/contrib/libc++/include/istream
@@ -164,7 +164,7 @@ template <class charT, class traits, class T>
_LIBCPP_BEGIN_NAMESPACE_STD
template <class _CharT, class _Traits>
-class _LIBCPP_VISIBLE basic_istream
+class _LIBCPP_TYPE_VIS basic_istream
: virtual public basic_ios<_CharT, _Traits>
{
streamsize __gc_;
@@ -194,7 +194,7 @@ protected:
public:
// 27.7.1.1.3 Prefix/suffix:
- class _LIBCPP_VISIBLE sentry;
+ class _LIBCPP_TYPE_VIS sentry;
// 27.7.1.2 Formatted input:
basic_istream& operator>>(basic_istream& (*__pf)(basic_istream&));
@@ -244,7 +244,7 @@ public:
};
template <class _CharT, class _Traits>
-class _LIBCPP_VISIBLE basic_istream<_CharT, _Traits>::sentry
+class _LIBCPP_TYPE_VIS basic_istream<_CharT, _Traits>::sentry
{
bool __ok_;
@@ -1216,16 +1216,9 @@ basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n)
sentry __sen(*this, true);
if (__sen)
{
- for (; __gc_ < __n; ++__gc_)
- {
- typename traits_type::int_type __i = this->rdbuf()->sbumpc();
- if (traits_type::eq_int_type(__i, traits_type::eof()))
- {
- this->setstate(ios_base::failbit | ios_base::eofbit);
- break;
- }
- *__s++ = traits_type::to_char_type(__i);
- }
+ __gc_ = this->rdbuf()->sgetn(__s, __n);
+ if (__gc_ != __n)
+ this->setstate(ios_base::failbit | ios_base::eofbit);
}
else
this->setstate(ios_base::failbit);
@@ -1460,7 +1453,7 @@ operator>>(basic_istream<_CharT, _Traits>&& __is, _Tp& __x)
#endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
template <class _CharT, class _Traits>
-class _LIBCPP_VISIBLE basic_iostream
+class _LIBCPP_TYPE_VIS basic_iostream
: public basic_istream<_CharT, _Traits>,
public basic_ostream<_CharT, _Traits>
{
OpenPOWER on IntegriCloud