streambuf.tcc (__copy_streambufs): Don't use in_avail(), simplify.
authorPaolo Carlini <pcarlini@unitus.it>
Sat, 26 Apr 2003 08:13:35 +0000 (10:13 +0200)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sat, 26 Apr 2003 08:13:35 +0000 (08:13 +0000)
2003-04-26  Paolo Carlini  <pcarlini@unitus.it>

* include/bits/streambuf.tcc (__copy_streambufs): Don't
use in_avail(), simplify.

2003-04-26  Paolo Carlini  <pcarlini@unitus.it>

* include/std/std_sstream.h (setbuf): don't set _M_buf_size,
in basic_stringbuf it's unused.

* include/std/std_sstream.h (underflow): consistently use
_M_in_cur, not gptr().

From-SVN: r66100

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/streambuf.tcc
libstdc++-v3/include/std/std_sstream.h

index cfbb11aa29a1fc771e19d4fc5ee77c24f1b23aaf..b78883113012a7585dc6a2b6f571295f8d38b475 100644 (file)
@@ -1,3 +1,16 @@
+2003-04-26  Paolo Carlini  <pcarlini@unitus.it>
+
+       * include/bits/streambuf.tcc (__copy_streambufs): Don't
+       use in_avail(), simplify.
+
+2003-04-26  Paolo Carlini  <pcarlini@unitus.it>
+
+       * include/std/std_sstream.h (setbuf): don't set _M_buf_size,
+       in basic_stringbuf it's unused.
+       
+       * include/std/std_sstream.h (underflow): consistently use
+       _M_in_cur, not gptr().
+
 2003-04-25  Ranjit Mathew  <rmathew@hotmail.com>
             Phil Edwards  <pme@gcc.gnu.org>
        
index dff48d25dfc79121329666784933a00ab9d996aa..8623d25c790b7aff20b5f0b376cd14df3743e5f5 100644 (file)
@@ -188,30 +188,29 @@ namespace std
       typedef typename _Traits::off_type       off_type;
 
       streamsize __ret = 0;
-      streamsize __in_avail = __sbin->in_avail();
-      streamsize __xtrct;
       const off_type __buf_size =
        __sbin->_M_buf_size > 0 ? __sbin->_M_buf_size : 1;
-
       try 
        {
-         while (__in_avail != -1)
+         for (;;)
            {
-             if (__in_avail != 0 && __sbin->_M_in_cur
-                 && __sbin->_M_in_cur + __in_avail <= __sbin->_M_in_end) 
+             streamsize __xtrct;
+             const off_type __avail = __sbin->_M_in_end
+                                      - __sbin->_M_in_cur;
+             if (__avail)
                {
-                 __xtrct = __sbout->sputn(__sbin->_M_in_cur, __in_avail);
+                 __xtrct = __sbout->sputn(__sbin->_M_in_cur, __avail);
                  __ret += __xtrct;
                  __sbin->_M_in_cur_move(__xtrct);
-                 if (__xtrct != __in_avail)
+                 if (__xtrct != __avail)
                    break;
                }
              else 
                {
                  streamsize __charsread;
-                 const streamsize __size =
-                   std::min(__buf_size, off_type(__sbout->_M_out_end -
-                                                 __sbout->_M_out_cur));
+                 const off_type __size = std::min(__buf_size,
+                                                  off_type(__sbout->_M_out_end
+                                                  - __sbout->_M_out_cur));
                  if (__size > 1)
                    {
                      _CharT* __buf =
@@ -242,7 +241,6 @@ namespace std
                }
              if (_Traits::eq_int_type(__sbin->sgetc(), _Traits::eof()))
                break;
-             __in_avail = __sbin->in_avail();
            }
        }
       catch(exception& __fail) 
index 48b81cd8d95bb281eb0d400f577f17b24e52ad85..6dc47e551563d48d8b805d94967b8fd9ec3711c2 100644 (file)
@@ -191,7 +191,7 @@ namespace std
       underflow()
       {
        if (this->_M_in_cur < this->_M_in_end)
-         return traits_type::to_int_type(*gptr());
+         return traits_type::to_int_type(*this->_M_in_cur);
        else
          return traits_type::eof();
       }
@@ -230,7 +230,6 @@ namespace std
            
            // Step 2: Use the external array.
            this->_M_buf = __s;
-           this->_M_buf_size = __n;
            _M_really_sync(__s, 0, 0);
          }
        return this;