Piotr Caban : msvcp: Fix format parsing in time_put_wchar_put_format.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jan 9 11:49:14 CST 2015


Module: wine
Branch: master
Commit: 998472d1eb80e11bc573360a98589ececad99a89
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=998472d1eb80e11bc573360a98589ececad99a89

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Jan  9 08:29:16 2015 +0100

msvcp: Fix format parsing in time_put_wchar_put_format.

---

 dlls/msvcp60/locale.c | 7 ++++---
 dlls/msvcp90/locale.c | 7 ++++---
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/dlls/msvcp60/locale.c b/dlls/msvcp60/locale.c
index 027c529..7aa09c5 100644
--- a/dlls/msvcp60/locale.c
+++ b/dlls/msvcp60/locale.c
@@ -7589,15 +7589,16 @@ ostreambuf_iterator_wchar* __thiscall time_put_wchar_put_format(const time_put *
             ostreambuf_iterator_wchar_put(&dest, *pat++);
         }else if(++pat == pat_end) {
             ostreambuf_iterator_wchar_put(&dest, percent);
-        }else if(!_Wcrtomb(c, *pat, NULL, &this->cvt) || (*c=='#' && pat+1==pat_end)) {
+        }else if(_Wcrtomb(c, *pat, NULL, &this->cvt)!=1 || (*c=='#' && pat+1==pat_end)) {
             ostreambuf_iterator_wchar_put(&dest, percent);
             ostreambuf_iterator_wchar_put(&dest, *pat++);
         }else {
+            pat++;
             if(*c == '#') {
-                if(!_Wcrtomb(c, *pat++, NULL, &this->cvt)) {
+                if(_Wcrtomb(c, *pat++, NULL, &this->cvt) != 1) {
                     ostreambuf_iterator_wchar_put(&dest, percent);
+                    ostreambuf_iterator_wchar_put(&dest, *(pat-2));
                     ostreambuf_iterator_wchar_put(&dest, *(pat-1));
-                    ostreambuf_iterator_wchar_put(&dest, *pat);
                 }else {
                     time_put_wchar_put(this, &dest, dest, base, t, *c, '#');
                 }
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index 9dedcc6..568585c 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -9249,15 +9249,16 @@ ostreambuf_iterator_wchar* __thiscall time_put_wchar_put_format(const time_put *
             ostreambuf_iterator_wchar_put(&dest, *pat++);
         }else if(++pat == pat_end) {
             ostreambuf_iterator_wchar_put(&dest, percent);
-        }else if(!_Wcrtomb(c, *pat, NULL, &this->cvt) || (*c=='#' && pat+1==pat_end)) {
+        }else if(_Wcrtomb(c, *pat, NULL, &this->cvt)!=1 || (*c=='#' && pat+1==pat_end)) {
             ostreambuf_iterator_wchar_put(&dest, percent);
             ostreambuf_iterator_wchar_put(&dest, *pat++);
         }else {
+            pat++;
             if(*c == '#') {
-                if(!_Wcrtomb(c, *pat++, NULL, &this->cvt)) {
+                if(_Wcrtomb(c, *pat++, NULL, &this->cvt) != 1) {
                     ostreambuf_iterator_wchar_put(&dest, percent);
+                    ostreambuf_iterator_wchar_put(&dest, *(pat-2));
                     ostreambuf_iterator_wchar_put(&dest, *(pat-1));
-                    ostreambuf_iterator_wchar_put(&dest, *pat);
                 }else {
                     time_put_wchar_put(this, &dest, dest, base, fill, t, *c, '#');
                 }




More information about the wine-cvs mailing list