void
__numpunct_cache<_CharT>::_M_cache(const locale& __loc)
{
- _M_allocated = true;
-
const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
char* __grouping = 0;
_CharT* __falsename = 0;
__try
{
- _M_grouping_size = __np.grouping().size();
+ const string& __g = __np.grouping();
+ _M_grouping_size = __g.size();
__grouping = new char[_M_grouping_size];
- __np.grouping().copy(__grouping, _M_grouping_size);
- _M_grouping = __grouping;
+ __g.copy(__grouping, _M_grouping_size);
_M_use_grouping = (_M_grouping_size
- && static_cast<signed char>(_M_grouping[0]) > 0
- && (_M_grouping[0]
+ && static_cast<signed char>(__grouping[0]) > 0
+ && (__grouping[0]
!= __gnu_cxx::__numeric_traits<char>::__max));
- _M_truename_size = __np.truename().size();
+ const basic_string<_CharT>& __tn = __np.truename();
+ _M_truename_size = __tn.size();
__truename = new _CharT[_M_truename_size];
- __np.truename().copy(__truename, _M_truename_size);
- _M_truename = __truename;
+ __tn.copy(__truename, _M_truename_size);
- _M_falsename_size = __np.falsename().size();
+ const basic_string<_CharT>& __fn = __np.falsename();
+ _M_falsename_size = __fn.size();
__falsename = new _CharT[_M_falsename_size];
- __np.falsename().copy(__falsename, _M_falsename_size);
- _M_falsename = __falsename;
+ __fn.copy(__falsename, _M_falsename_size);
_M_decimal_point = __np.decimal_point();
_M_thousands_sep = __np.thousands_sep();
__ct.widen(__num_base::_S_atoms_in,
__num_base::_S_atoms_in
+ __num_base::_S_iend, _M_atoms_in);
+
+ _M_grouping = __grouping;
+ _M_truename = __truename;
+ _M_falsename = __falsename;
+ _M_allocated = true;
}
__catch(...)
{
void
__moneypunct_cache<_CharT, _Intl>::_M_cache(const locale& __loc)
{
- _M_allocated = true;
-
const moneypunct<_CharT, _Intl>& __mp =
use_facet<moneypunct<_CharT, _Intl> >(__loc);
_CharT* __negative_sign = 0;
__try
{
- _M_grouping_size = __mp.grouping().size();
+ const string& __g = __mp.grouping();
+ _M_grouping_size = __g.size();
__grouping = new char[_M_grouping_size];
- __mp.grouping().copy(__grouping, _M_grouping_size);
- _M_grouping = __grouping;
+ __g.copy(__grouping, _M_grouping_size);
_M_use_grouping = (_M_grouping_size
- && static_cast<signed char>(_M_grouping[0]) > 0
- && (_M_grouping[0]
+ && static_cast<signed char>(__grouping[0]) > 0
+ && (__grouping[0]
!= __gnu_cxx::__numeric_traits<char>::__max));
- _M_curr_symbol_size = __mp.curr_symbol().size();
+ const basic_string<_CharT>& __cs = __mp.curr_symbol();
+ _M_curr_symbol_size = __cs.size();
__curr_symbol = new _CharT[_M_curr_symbol_size];
- __mp.curr_symbol().copy(__curr_symbol, _M_curr_symbol_size);
- _M_curr_symbol = __curr_symbol;
+ __cs.copy(__curr_symbol, _M_curr_symbol_size);
- _M_positive_sign_size = __mp.positive_sign().size();
+ const basic_string<_CharT>& __ps = __mp.positive_sign();
+ _M_positive_sign_size = __ps.size();
__positive_sign = new _CharT[_M_positive_sign_size];
- __mp.positive_sign().copy(__positive_sign, _M_positive_sign_size);
- _M_positive_sign = __positive_sign;
+ __ps.copy(__positive_sign, _M_positive_sign_size);
- _M_negative_sign_size = __mp.negative_sign().size();
+ const basic_string<_CharT>& __ns = __mp.negative_sign();
+ _M_negative_sign_size = __ns.size();
__negative_sign = new _CharT[_M_negative_sign_size];
- __mp.negative_sign().copy(__negative_sign, _M_negative_sign_size);
- _M_negative_sign = __negative_sign;
+ __ns.copy(__negative_sign, _M_negative_sign_size);
_M_pos_format = __mp.pos_format();
_M_neg_format = __mp.neg_format();
const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
__ct.widen(money_base::_S_atoms,
money_base::_S_atoms + money_base::_S_end, _M_atoms);
+
+ _M_grouping = __grouping;
+ _M_curr_symbol = __curr_symbol;
+ _M_positive_sign = __positive_sign;
+ _M_negative_sign = __negative_sign;
+ _M_allocated = true;
}
__catch(...)
{