You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2008/01/11 03:03:30 UTC
svn commit: r611019 - /incubator/stdcxx/trunk/include/ostream.cc
Author: sebor
Date: Thu Jan 10 18:03:25 2008
New Revision: 611019
URL: http://svn.apache.org/viewvc?rev=611019&view=rev
Log:
2008-01-10 Martin Sebor <se...@roguewave.com>
STDCXX-626
* ostream.cc (flush): Implemeneted proposed resolution of LWG
issue 581 and reverted the resolution of issue 60 wrt ostream
::flush().
Modified:
incubator/stdcxx/trunk/include/ostream.cc
Modified: incubator/stdcxx/trunk/include/ostream.cc
URL: http://svn.apache.org/viewvc/incubator/stdcxx/trunk/include/ostream.cc?rev=611019&r1=611018&r2=611019&view=diff
==============================================================================
--- incubator/stdcxx/trunk/include/ostream.cc (original)
+++ incubator/stdcxx/trunk/include/ostream.cc Thu Jan 10 18:03:25 2008
@@ -22,7 +22,7 @@
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
- * Copyright 1994-2006 Rogue Wave Software.
+ * Copyright 1994-2008 Rogue Wave Software, Inc.
*
**************************************************************************/
@@ -35,19 +35,25 @@
basic_ostream<_CharT, _Traits>::flush ()
{
if (this->rdbuf ()) {
- _RWSTD_MT_GUARD (this->_C_bufmutex ());
- int __res = 0;
+ // see LWG issue 581
- _TRY {
- __res = this->rdbuf ()->pubsync ();
- }
- _CATCH (...) {
- this->setstate (ios_base::badbit | _RW::__rw_rethrow);
- }
+ const sentry __opfx (*this);
+
+ if (__opfx) {
- if (-1 == __res)
- this->setstate (ios_base::badbit);
+ int __res = 0;
+
+ _TRY {
+ __res = this->rdbuf ()->pubsync ();
+ }
+ _CATCH (...) {
+ this->setstate (ios_base::badbit | _RW::__rw_rethrow);
+ }
+
+ if (-1 == __res)
+ this->setstate (ios_base::badbit);
+ }
}
return *this;