OSDN Git Service

2011-12-02 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Dec 2011 17:23:08 +0000 (17:23 +0000)
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 2 Dec 2011 17:23:08 +0000 (17:23 +0000)
* include/std/iomanip (put_money): Fix thinko, use __err local,
like in, eg, basic_ostream::_M_insert.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181931 138bc75d-0d04-0410-961f-82ee72b054a4

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/iomanip

index 7ce62ea..0c7a62d 100644 (file)
@@ -1,3 +1,8 @@
+2011-12-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * include/std/iomanip (put_money): Fix thinko, use __err local,
+       like in, eg, basic_ostream::_M_insert.
+
 2011-11-30  Benjamin Kosnik  <bkoz@redhat.com>
 
         * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Remove
index e725b25..840d756 100644 (file)
@@ -282,7 +282,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            }
          __catch(...)
            { __is._M_setstate(ios_base::badbit); }
-         if (ios_base::goodbit != __err)
+         if (__err)
            __is.setstate(__err);
        }
       return __is; 
@@ -312,15 +312,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       typename basic_ostream<_CharT, _Traits>::sentry __cerb(__os);
       if (__cerb)
        {
+         ios_base::iostate __err = ios_base::goodbit;
          __try
            {
              typedef ostreambuf_iterator<_CharT, _Traits>   _Iter;
              typedef money_put<_CharT, _Iter>               _MoneyPut;
+
              const _MoneyPut& __mp = use_facet<_MoneyPut>(__os.getloc());
-             const _Iter __end = __mp.put(_Iter(__os.rdbuf()), __f._M_intl,
-                                          __os, __os.fill(), __f._M_mon);
-             if (__end.failed())
-               __os.setstate(ios_base::badbit);
+             if (__mp.put(_Iter(__os.rdbuf()), __f._M_intl, __os,
+                          __os.fill(), __f._M_mon).failed())
+               __err |= ios_base::badbit;
            }
          __catch(__cxxabiv1::__forced_unwind&)
            {
@@ -329,6 +330,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            }
          __catch(...)
            { __os._M_setstate(ios_base::badbit); }
+         if (__err)
+           __os.setstate(__err);
        }
       return __os; 
     }