codecvt_members.cc (codecvt::do_in, [...]): More minor tweaks.
authorPaolo Carlini <pcarlini@suse.de>
Sun, 30 Nov 2003 19:10:50 +0000 (19:10 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sun, 30 Nov 2003 19:10:50 +0000 (19:10 +0000)
2003-11-30  Paolo Carlini  <pcarlini@suse.de>

* config/locale/gnu/codecvt_members.cc (codecvt::do_in,
codecvt::do_length): More minor tweaks.

From-SVN: r74069

libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/gnu/codecvt_members.cc

index 9dd4d0097f79afaa5266135dbe1a61f03bb8160d..4ee7fd7967be986ca0e5b15063391cc253cdf94b 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-30  Paolo Carlini  <pcarlini@suse.de>
+
+       * config/locale/gnu/codecvt_members.cc (codecvt::do_in,
+       codecvt::do_length): More minor tweaks.
+
 2003-11-30  Paolo Carlini  <pcarlini@suse.de>
 
        * config/locale/gnu/codecvt_members.cc (codecvt::do_in):
index b0c9891a165ea01415c4e207dd2f5b6ec2186cf1..3a3e324fee9a76c9220b9a7b6024ef70f34c89f0 100644 (file)
@@ -144,23 +144,21 @@ namespace std
          __from_chunk_end = __from_end;
 
        __from = __from_next;
-       const size_t __conv = mbsnrtowcs(__to_next, &__from_next,
-                                        __from_chunk_end - __from_next,
-                                        __to_end - __to_next, &__state);
+       size_t __conv = mbsnrtowcs(__to_next, &__from_next,
+                                  __from_chunk_end - __from_next,
+                                  __to_end - __to_next, &__state);
        if (__conv == static_cast<size_t>(-1))
          {
            // In case of error, in order to stop at the exact place we
            // have to start again from the beginning with a series of
            // mbrtowc.
-           for (;; ++__to_next)
+           for (;; ++__to_next, __from += __conv)
              {
-               const size_t __conv_err = mbrtowc(__to_next, __from,
-                                                 __from_end - __from,
-                                                 &__tmp_state);
-               if (__conv_err == static_cast<size_t>(-1)
-                   || __conv_err == static_cast<size_t>(-2))
+               __conv = mbrtowc(__to_next, __from, __from_end - __from,
+                                &__tmp_state);
+               if (__conv == static_cast<size_t>(-1)
+                   || __conv == static_cast<size_t>(-2))
                  break;
-               __from += __conv_err;
              }
            __from_next = __from;
            __state = __tmp_state;          
@@ -262,22 +260,21 @@ namespace std
          __from_chunk_end = __end;
 
        const extern_type* __tmp_from = __from;
-       const size_t __conv = mbsnrtowcs(__to, &__from,
-                                        __from_chunk_end - __from,
-                                        __max, &__state);
+       size_t __conv = mbsnrtowcs(__to, &__from,
+                                  __from_chunk_end - __from,
+                                  __max, &__state);
        if (__conv == static_cast<size_t>(-1))
          {
            // In case of error, in order to stop at the exact place we
            // have to start again from the beginning with a series of
            // mbrtowc.
-           for (__from = __tmp_from;;)
+           for (__from = __tmp_from;; __from += __conv)
              {
-               const size_t __conv_err = mbrtowc(NULL, __from, __end - __from,
-                                                 &__tmp_state);
-               if (__conv_err == static_cast<size_t>(-1)
-                   || __conv_err == static_cast<size_t>(-2))
+               __conv = mbrtowc(NULL, __from, __end - __from,
+                                &__tmp_state);
+               if (__conv == static_cast<size_t>(-1)
+                   || __conv == static_cast<size_t>(-2))
                  break;
-               __from += __conv_err;
              }
            __state = __tmp_state;
            __ret += __from - __tmp_from;