diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-17 09:01:27 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-17 09:01:27 +0000 |
commit | 7ef9bed7c378ace785cfe78ed0baaf4777f15fa7 (patch) | |
tree | e207d48aa2f0439e788f766040a0e6e428513d9d /libstdc++-v3 | |
parent | 85e2ae79e80e763ed2546c600305e2d77f9355d6 (diff) | |
download | gcc-7ef9bed7c378ace785cfe78ed0baaf4777f15fa7.tar.gz |
2007-05-17 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (__pad<>::_S_pad): Minor tweaks, avoid
unnecessary casts, do widenings just in time.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124790 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 29 |
2 files changed, 18 insertions, 16 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e7fa7518f4d..27189d6bc1f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2007-05-17 Paolo Carlini <pcarlini@suse.de> + + * include/bits/locale_facets.tcc (__pad<>::_S_pad): Minor tweaks, avoid + unnecessary casts, do widenings just in time. + 2007-05-16 Benjamin Kosnik <bkoz@redhat.com> * acinclude.m4 (GLIBCXX_CHECK_COMPILER_FEATURES): Add a function diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 481362af15f..1b714adf8fe 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -1200,7 +1200,7 @@ _GLIBCXX_END_LDBL_NAMESPACE // Padding last. if (__adjust == ios_base::left) { - _Traits::copy(__news, const_cast<_CharT*>(__olds), __oldlen); + _Traits::copy(__news, __olds, __oldlen); _Traits::assign(__news + __oldlen, __plen, __fill); return; } @@ -1214,30 +1214,27 @@ _GLIBCXX_END_LDBL_NAMESPACE const locale& __loc = __io._M_getloc(); const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc); - const bool __testsign = (__ctype.widen('-') == __olds[0] - || __ctype.widen('+') == __olds[0]); - const bool __testhex = (__ctype.widen('0') == __olds[0] - && __oldlen > 1 - && (__ctype.widen('x') == __olds[1] - || __ctype.widen('X') == __olds[1])); - if (__testhex) + if (__ctype.widen('-') == __olds[0] + || __ctype.widen('+') == __olds[0]) { __news[0] = __olds[0]; - __news[1] = __olds[1]; - __mod = 2; - __news += 2; + __mod = 1; + ++__news; } - else if (__testsign) + else if (__ctype.widen('0') == __olds[0] + && __oldlen > 1 + && (__ctype.widen('x') == __olds[1] + || __ctype.widen('X') == __olds[1])) { __news[0] = __olds[0]; - __mod = 1; - ++__news; + __news[1] = __olds[1]; + __mod = 2; + __news += 2; } // else Padding first. } _Traits::assign(__news, __plen, __fill); - _Traits::copy(__news + __plen, const_cast<_CharT*>(__olds + __mod), - __oldlen - __mod); + _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod); } bool |