From a8c6fda50170b4557a9dd66331b0e0ead344c56b Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Thu, 28 Jul 2011 12:28:38 +0200 Subject: [PATCH] msvcrt: Fix uninitialized memory access in wcsrtombs_l implementation (valgrind). --- dlls/msvcrt/wcs.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index bb720e75555..04d3ee2e15d 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -313,7 +313,6 @@ static MSVCRT_size_t CDECL MSVCRT_wcsrtombs_l(char *mbstr, const MSVCRT_wchar_t MSVCRT_size_t count, MSVCRT__locale_t locale) { MSVCRT_pthreadlocinfo locinfo; - char default_char = '\0'; MSVCRT_size_t tmp = 0; BOOL used_default; @@ -322,16 +321,20 @@ static MSVCRT_size_t CDECL MSVCRT_wcsrtombs_l(char *mbstr, const MSVCRT_wchar_t else locinfo = locale->locinfo; - if(!mbstr) - return WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS, - *wcstr, -1, NULL, 0, &default_char, &used_default)-1; + if(!mbstr) { + tmp = WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS, + *wcstr, -1, NULL, 0, NULL, &used_default)-1; + if(used_default) + return -1; + return tmp; + } while(**wcstr) { char buf[3]; MSVCRT_size_t i, size; size = WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS, - *wcstr, 1, buf, 3, &default_char, &used_default); + *wcstr, 1, buf, 3, NULL, &used_default); if(used_default) return -1; if(tmp+size > count)