locale_facets.tcc (__pad<>::_S_pad): Minor tweaks, avoid unnecessary casts, do wideni...
authorPaolo Carlini <pcarlini@suse.de>
Thu, 17 May 2007 09:01:27 +0000 (09:01 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Thu, 17 May 2007 09:01:27 +0000 (09:01 +0000)
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.

From-SVN: r124790

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/locale_facets.tcc

index e7fa7518f4d65e8e3ec5e5d2e7bd49573167303e..27189d6bc1f69b96fa2a4a192201ecd3c3315008 100644 (file)
@@ -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
index 481362af15f70828ba263f7291fbf85c02df625c..1b714adf8fe9cf8d0267ddc0d92b92f906ae0a42 100644 (file)
@@ -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