iomanip (put_money): Fix thinko, use __err local, like in, eg, basic_ostream::_M_insert.

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.

From-SVN: r181931
This commit is contained in:
Paolo Carlini 2011-12-02 17:23:08 +00:00 committed by Paolo Carlini
parent 73cb28d7d0
commit f5ca3c3408
2 changed files with 13 additions and 5 deletions

View 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

View 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;
}