Module: wine Branch: master Commit: 998472d1eb80e11bc573360a98589ececad99a89 URL: http://source.winehq.org/git/wine.git/?a=commit;h=998472d1eb80e11bc573360a98...
Author: Piotr Caban piotr@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, '#'); }