summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2007-05-17 09:01:27 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2007-05-17 09:01:27 +0000
commit7ef9bed7c378ace785cfe78ed0baaf4777f15fa7 (patch)
treee207d48aa2f0439e788f766040a0e6e428513d9d /libstdc++-v3
parent85e2ae79e80e763ed2546c600305e2d77f9355d6 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc29
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