The last argument to MultiByteToWideChar is wide character count and

not the buffer size in bytes. Fixed all places where it was wrong.
This commit is contained in:
Marcus Meissner 2005-09-12 22:07:53 +00:00 committed by Alexandre Julliard
parent db62ddec4d
commit bd7ec9aca5
21 changed files with 34 additions and 34 deletions

View File

@ -579,7 +579,7 @@ INT WINAPI AddMRUStringA(HANDLE hList, LPCSTR lpszString)
if (!stringW) if (!stringW)
return -1; return -1;
MultiByteToWideChar(CP_ACP, 0, lpszString, -1, stringW, len); MultiByteToWideChar(CP_ACP, 0, lpszString, -1, stringW, len/sizeof(WCHAR));
ret = AddMRUData(hList, stringW, len); ret = AddMRUData(hList, stringW, len);
Free(stringW); Free(stringW);
return ret; return ret;

View File

@ -2161,7 +2161,7 @@ static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText)
{ {
WCHAR szTitle[256]; WCHAR szTitle[256];
MultiByteToWideChar(CP_ACP, 0, lpszText, -1, MultiByteToWideChar(CP_ACP, 0, lpszText, -1,
szTitle, sizeof(szTitle)); szTitle, sizeof(szTitle)/sizeof(WCHAR));
PROPSHEET_SetTitleW(hwndDlg, dwStyle, szTitle); PROPSHEET_SetTitleW(hwndDlg, dwStyle, szTitle);
} }
else else

View File

@ -6483,23 +6483,24 @@ static LRESULT TOOLBAR_TTGetDispInfo (TOOLBAR_INFO *infoPtr, NMTTDISPINFOW *lpnm
TRACE("TBN_GETINFOTIPA - got string %s\n", debugstr_a(tbgit.pszText)); TRACE("TBN_GETINFOTIPA - got string %s\n", debugstr_a(tbgit.pszText));
len = -1 + MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, NULL, 0); len = MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, NULL, 0);
if (len > sizeof(lpnmtdi->szText)/sizeof(lpnmtdi->szText[0])-1) if (len > sizeof(lpnmtdi->szText)/sizeof(lpnmtdi->szText[0]))
{ {
/* need to allocate temporary buffer in infoPtr as there /* need to allocate temporary buffer in infoPtr as there
* isn't enough space in buffer passed to us by the * isn't enough space in buffer passed to us by the
* tooltip control */ * tooltip control */
infoPtr->pszTooltipText = Alloc((len+1)*sizeof(WCHAR)); infoPtr->pszTooltipText = Alloc(len*sizeof(WCHAR));
if (infoPtr->pszTooltipText) if (infoPtr->pszTooltipText)
{ {
MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, len+1, infoPtr->pszTooltipText, (len+1)*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1, infoPtr->pszTooltipText, len);
lpnmtdi->lpszText = infoPtr->pszTooltipText; lpnmtdi->lpszText = infoPtr->pszTooltipText;
return 0; return 0;
} }
} }
else if (len > 0) else if (len > 0)
{ {
MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, len+1, lpnmtdi->lpszText, (len+1)*sizeof(WCHAR)); MultiByteToWideChar(CP_ACP, 0, tbgit.pszText, -1,
lpnmtdi->lpszText, sizeof(lpnmtdi->szText)/sizeof(lpnmtdi->szText[0]));
return 0; return 0;
} }
} }

View File

@ -775,8 +775,8 @@ TREEVIEW_UpdateDispInfo(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
wineItem->pszText = newText; wineItem->pszText = newText;
MultiByteToWideChar( CP_ACP, 0, MultiByteToWideChar( CP_ACP, 0,
(LPSTR)callback.item.pszText, -1, (LPSTR)callback.item.pszText, -1,
wineItem->pszText, buflen); wineItem->pszText, buflen/sizeof(WCHAR));
wineItem->cchTextMax = buflen; wineItem->cchTextMax = buflen/sizeof(WCHAR);
} }
/* If ReAlloc fails we have nothing to do, but keep original text */ /* If ReAlloc fails we have nothing to do, but keep original text */
} }
@ -818,8 +818,8 @@ TREEVIEW_UpdateDispInfo(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem,
wineItem->pszText = newText; wineItem->pszText = newText;
MultiByteToWideChar( CP_ACP, 0, MultiByteToWideChar( CP_ACP, 0,
(LPSTR)callback.item.pszText, -1, (LPSTR)callback.item.pszText, -1,
wineItem->pszText, buflen); wineItem->pszText, buflen/sizeof(WCHAR));
wineItem->cchTextMax = buflen; wineItem->cchTextMax = buflen/sizeof(WCHAR);
if (oldText) if (oldText)
Free(oldText); Free(oldText);
} }

View File

@ -407,7 +407,7 @@ static void dump_modules(struct dump_context* dc, BOOL dump_elf)
if (sizeof(ULONG) + ms->Length > sizeof(tmp)) if (sizeof(ULONG) + ms->Length > sizeof(tmp))
FIXME("Buffer overflow!!!\n"); FIXME("Buffer overflow!!!\n");
MultiByteToWideChar(CP_ACP, 0, dc->module[i].name, -1, MultiByteToWideChar(CP_ACP, 0, dc->module[i].name, -1,
ms->Buffer, ms->Length); ms->Buffer, ms->Length/sizeof(WCHAR));
if (dc->cb) if (dc->cb)
{ {

View File

@ -903,7 +903,7 @@ HRESULT linuxinput_get_info_W(
/* yes, this is windows behavior (print the GUID_Name for name) */ /* yes, this is windows behavior (print the GUID_Name for name) */
MultiByteToWideChar(CP_ACP, 0, _dump_dinput_GUID(rguid), -1, MultiByteToWideChar(CP_ACP, 0, _dump_dinput_GUID(rguid), -1,
(WCHAR*)&(info->tszName), sizeof(WCHAR) * MAX_PATH); (WCHAR*)&(info->tszName), MAX_PATH);
return DI_OK; return DI_OK;
} }

View File

@ -1088,8 +1088,8 @@ static HRESULT WINAPI DSPROPERTY_Enumerate1(
lstrcpynA(data.DescriptionA, desc.szDesc, sizeof(data.DescriptionA)); lstrcpynA(data.DescriptionA, desc.szDesc, sizeof(data.DescriptionA));
lstrcpynA(data.ModuleA, desc.szDrvname, sizeof(data.ModuleA)); lstrcpynA(data.ModuleA, desc.szDrvname, sizeof(data.ModuleA));
MultiByteToWideChar( CP_ACP, 0, data.DescriptionA, -1, data.DescriptionW, sizeof(data.DescriptionW) ); MultiByteToWideChar( CP_ACP, 0, data.DescriptionA, -1, data.DescriptionW, sizeof(data.DescriptionW)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, data.ModuleA, -1, data.ModuleW, sizeof(data.ModuleW) ); MultiByteToWideChar( CP_ACP, 0, data.ModuleA, -1, data.ModuleW, sizeof(data.ModuleW)/sizeof(WCHAR) );
data.Type = DIRECTSOUNDDEVICE_TYPE_EMULATED; data.Type = DIRECTSOUNDDEVICE_TYPE_EMULATED;
err = mmErr(waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD_PTR)&drv, 0)); err = mmErr(waveOutMessage((HWAVEOUT)wod, DRV_QUERYDSOUNDIFACE, (DWORD_PTR)&drv, 0));
@ -1115,8 +1115,8 @@ static HRESULT WINAPI DSPROPERTY_Enumerate1(
lstrcpynA(data.DescriptionA, desc.szDesc, sizeof(data.DescriptionA)); lstrcpynA(data.DescriptionA, desc.szDesc, sizeof(data.DescriptionA));
lstrcpynA(data.ModuleA, desc.szDrvname, sizeof(data.ModuleA)); lstrcpynA(data.ModuleA, desc.szDrvname, sizeof(data.ModuleA));
MultiByteToWideChar( CP_ACP, 0, data.DescriptionA, -1, data.DescriptionW, sizeof(data.DescriptionW) ); MultiByteToWideChar( CP_ACP, 0, data.DescriptionA, -1, data.DescriptionW, sizeof(data.DescriptionW)/sizeof(WCHAR) );
MultiByteToWideChar( CP_ACP, 0, data.ModuleA, -1, data.ModuleW, sizeof(data.ModuleW) ); MultiByteToWideChar( CP_ACP, 0, data.ModuleA, -1, data.ModuleW, sizeof(data.ModuleW)/sizeof(WCHAR) );
data.Type = DIRECTSOUNDDEVICE_TYPE_EMULATED; data.Type = DIRECTSOUNDDEVICE_TYPE_EMULATED;
err = mmErr(waveInMessage((HWAVEIN)wid, DRV_QUERYDSOUNDIFACE, (DWORD_PTR)&drv, 0)); err = mmErr(waveInMessage((HWAVEIN)wid, DRV_QUERYDSOUNDIFACE, (DWORD_PTR)&drv, 0));

View File

@ -848,7 +848,7 @@ static void LoadReplaceList(void)
&dlen) == ERROR_SUCCESS) { &dlen) == ERROR_SUCCESS) {
TRACE("Got %s=%s\n", debugstr_a(value), debugstr_a(data)); TRACE("Got %s=%s\n", debugstr_a(value), debugstr_a(data));
/* "NewName"="Oldname" */ /* "NewName"="Oldname" */
if(!MultiByteToWideChar(CP_ACP, 0, data, -1, old_nameW, sizeof(old_nameW))) if(!MultiByteToWideChar(CP_ACP, 0, data, -1, old_nameW, sizeof(old_nameW)/sizeof(WCHAR)))
break; break;
/* Find the old family and hence all of the font files /* Find the old family and hence all of the font files
@ -3075,7 +3075,7 @@ UINT WineEngGetOutlineTextMetrics(GdiFont font, UINT cbSize,
* sizeof(WCHAR); * sizeof(WCHAR);
style_nameW = HeapAlloc(GetProcessHeap(), 0, lensty); style_nameW = HeapAlloc(GetProcessHeap(), 0, lensty);
MultiByteToWideChar(CP_ACP, 0, ft_face->style_name, -1, MultiByteToWideChar(CP_ACP, 0, ft_face->style_name, -1,
style_nameW, lensty); style_nameW, lensty/sizeof(WCHAR));
/* These names should be read from the TT name table */ /* These names should be read from the TT name table */

View File

@ -625,7 +625,7 @@ static HRESULT (WINAPI *pVarParseNumFromStr)(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE*
/* Macros for converting and testing the result of VarParseNumFromStr */ /* Macros for converting and testing the result of VarParseNumFromStr */
#define FAILDIG 255 #define FAILDIG 255
#define CONVERTN(str,dig,flags) MultiByteToWideChar(CP_ACP,0,str,-1,buff,sizeof(buff)); \ #define CONVERTN(str,dig,flags) MultiByteToWideChar(CP_ACP,0,str,-1,buff,sizeof(buff)/sizeof(WCHAR)); \
memset(rgb, FAILDIG, sizeof(rgb)); memset(&np,-1,sizeof(np)); np.cDig = dig; np.dwInFlags = flags; \ memset(rgb, FAILDIG, sizeof(rgb)); memset(&np,-1,sizeof(np)); np.cDig = dig; np.dwInFlags = flags; \
hres = pVarParseNumFromStr(buff,lcid,LOCALE_NOUSEROVERRIDE,&np,rgb) hres = pVarParseNumFromStr(buff,lcid,LOCALE_NOUSEROVERRIDE,&np,rgb)
#define CONVERT(str,flags) CONVERTN(str,sizeof(rgb),flags) #define CONVERT(str,flags) CONVERTN(str,sizeof(rgb),flags)

View File

@ -121,7 +121,7 @@ static HMODULE hOleaut32;
#define CONVERT_STR(func,str,flags) \ #define CONVERT_STR(func,str,flags) \
SetLastError(0); \ SetLastError(0); \
if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,sizeof(buff)); \ if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,sizeof(buff)/sizeof(WCHAR)); \
hres = p##func(str ? buff : NULL,in,flags,&out) hres = p##func(str ? buff : NULL,in,flags,&out)
#define COPYTEST(val, vt, srcval, dstval, srcref, dstref, fs) do { \ #define COPYTEST(val, vt, srcval, dstval, srcref, dstref, fs) do { \
@ -3249,7 +3249,7 @@ static void test_VarDateFromDec(void)
#define DFS(str) \ #define DFS(str) \
buff[0] = '\0'; out = 0.0; \ buff[0] = '\0'; out = 0.0; \
if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,sizeof(buff)); \ if (str) MultiByteToWideChar(CP_ACP,0,str,-1,buff,sizeof(buff)/sizeof(WCHAR)); \
hres = pVarDateFromStr(str ? buff : NULL,lcid,LOCALE_NOUSEROVERRIDE,&out) hres = pVarDateFromStr(str ? buff : NULL,lcid,LOCALE_NOUSEROVERRIDE,&out)
#define MKRELDATE(day,mth) st.wMonth = mth; st.wDay = day; \ #define MKRELDATE(day,mth) st.wMonth = mth; st.wDay = day; \

View File

@ -2755,7 +2755,7 @@ RTFFlushCPOutputBuffer(RTF_Info *info)
int length; int length;
length = MultiByteToWideChar(info->codePage, 0, info->cpOutputBuffer, length = MultiByteToWideChar(info->codePage, 0, info->cpOutputBuffer,
info->dwCPOutputCount, buffer, bufferMax); info->dwCPOutputCount, buffer, bufferMax/sizeof(WCHAR));
info->dwCPOutputCount = 0; info->dwCPOutputCount = 0;
RTFPutUnicodeString(info, buffer, length); RTFPutUnicodeString(info, buffer, length);

View File

@ -52,7 +52,7 @@ CHARFORMAT2W *ME_ToCF2W(CHARFORMAT2W *to, CHARFORMAT2W *from)
CopyMemory(to, f, sizeof(CHARFORMATA)-sizeof(f->szFaceName)); CopyMemory(to, f, sizeof(CHARFORMATA)-sizeof(f->szFaceName));
/* convert face name */ /* convert face name */
if (f->dwMask & CFM_FACE) if (f->dwMask & CFM_FACE)
MultiByteToWideChar(0, 0, f->szFaceName, -1, to->szFaceName, sizeof(to->szFaceName)); MultiByteToWideChar(0, 0, f->szFaceName, -1, to->szFaceName, sizeof(to->szFaceName)/sizeof(WCHAR));
/* copy the rest of the 2A structure to 2W */ /* copy the rest of the 2A structure to 2W */
CopyMemory(1+((CHARFORMATW *)to), f+1, sizeof(CHARFORMAT2A)-sizeof(CHARFORMATA)); CopyMemory(1+((CHARFORMATW *)to), f+1, sizeof(CHARFORMAT2A)-sizeof(CHARFORMATA));
to->cbSize = sizeof(CHARFORMAT2W); to->cbSize = sizeof(CHARFORMAT2W);

View File

@ -620,7 +620,7 @@ static PSecPkgInfoW _copyPackageInfoFlatAToW(PSecPkgInfoA infoA)
{ {
ret->Comment = nextString; ret->Comment = nextString;
MultiByteToWideChar(CP_ACP, 0, infoA->Comment, -1, nextString, MultiByteToWideChar(CP_ACP, 0, infoA->Comment, -1, nextString,
nameLen); commentLen);
} }
else else
ret->Comment = NULL; ret->Comment = NULL;

View File

@ -951,8 +951,7 @@ static struct inf_file *parse_file( HANDLE handle, const WCHAR *class, UINT *err
WCHAR *new_buff = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) ); WCHAR *new_buff = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) );
if (new_buff) if (new_buff)
{ {
DWORD len = MultiByteToWideChar( CP_ACP, 0, buffer, size, new_buff, DWORD len = MultiByteToWideChar( CP_ACP, 0, buffer, size, new_buff, size );
size * sizeof(WCHAR) );
err = parse_buffer( file, new_buff, new_buff + len, error_line ); err = parse_buffer( file, new_buff, new_buff + len, error_line );
HeapFree( GetProcessHeap(), 0, new_buff ); HeapFree( GetProcessHeap(), 0, new_buff );
} }

View File

@ -134,7 +134,7 @@ LONG WINAPI SHRegOpenUSKeyW(LPCWSTR Path, REGSAM AccessType, HUSKEY hRelativeUSK
/* Create internal HUSKEY */ /* Create internal HUSKEY */
hKey = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*hKey)); hKey = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*hKey));
lstrcpynW(hKey->lpszPath, Path, sizeof(hKey->lpszPath)); lstrcpynW(hKey->lpszPath, Path, sizeof(hKey->lpszPath)/sizeof(WCHAR));
if (hRelativeUSKey) if (hRelativeUSKey)
{ {

View File

@ -1810,7 +1810,7 @@ HRESULT WINAPI SHStrDupA(LPCSTR lpszStr, LPWSTR * lppszDest)
if (*lppszDest) if (*lppszDest)
{ {
MultiByteToWideChar(0, 0, lpszStr, -1, *lppszDest, len); MultiByteToWideChar(0, 0, lpszStr, -1, *lppszDest, len/sizeof(WCHAR));
hRet = S_OK; hRet = S_OK;
} }
else else

View File

@ -3452,7 +3452,7 @@ static WINMM_MapType MCI_UnMapMsg32WTo16(WORD uDevType, WORD wMsg, DWORD dwFlag
UnMapLS( lParam ); UnMapLS( lParam );
if (msip16) { if (msip16) {
MultiByteToWideChar(CP_ACP, 0, MapSL(msip16->lpstrReturn), msip16->dwRetSize, MultiByteToWideChar(CP_ACP, 0, MapSL(msip16->lpstrReturn), msip16->dwRetSize,
msip32w->lpstrReturn, msip32w->dwRetSize); msip32w->lpstrReturn, msip32w->dwRetSize/sizeof(WCHAR));
UnMapLS( msip16->lpstrReturn ); UnMapLS( msip16->lpstrReturn );
HeapFree( GetProcessHeap(), 0, MapSL(msip16->lpstrReturn) ); HeapFree( GetProcessHeap(), 0, MapSL(msip16->lpstrReturn) );
HeapFree( GetProcessHeap(), 0, (char*)msip16 - sizeof(LPMCI_SYSINFO_PARMSW) ); HeapFree( GetProcessHeap(), 0, (char*)msip16 - sizeof(LPMCI_SYSINFO_PARMSW) );

View File

@ -603,7 +603,7 @@ UINT WINAPI mixerGetLineInfoA(HMIXEROBJ hmix, LPMIXERLINEA lpmliA,
mliW.Target.wMid = lpmliA->Target.wMid; mliW.Target.wMid = lpmliA->Target.wMid;
mliW.Target.wPid = lpmliA->Target.wPid; mliW.Target.wPid = lpmliA->Target.wPid;
mliW.Target.vDriverVersion = lpmliA->Target.vDriverVersion; mliW.Target.vDriverVersion = lpmliA->Target.vDriverVersion;
MultiByteToWideChar( CP_ACP, 0, lpmliA->Target.szPname, -1, mliW.Target.szPname, sizeof(mliW.Target.szPname)); MultiByteToWideChar( CP_ACP, 0, lpmliA->Target.szPname, -1, mliW.Target.szPname, sizeof(mliW.Target.szPname)/sizeof(WCHAR));
break; break;
default: default:
WARN("Unsupported fdwControls=0x%08lx\n", fdwInfo); WARN("Unsupported fdwControls=0x%08lx\n", fdwInfo);

View File

@ -3082,7 +3082,7 @@ SOCKET WINAPI WSASocketA(int af, int type, int protocol,
memcpy(&info, lpProtocolInfo, FIELD_OFFSET(WSAPROTOCOL_INFOW, szProtocol)); memcpy(&info, lpProtocolInfo, FIELD_OFFSET(WSAPROTOCOL_INFOW, szProtocol));
len = MultiByteToWideChar(CP_ACP, 0, lpProtocolInfo->szProtocol, -1, len = MultiByteToWideChar(CP_ACP, 0, lpProtocolInfo->szProtocol, -1,
info.szProtocol, WSAPROTOCOL_LEN * sizeof(WCHAR) + 1); info.szProtocol, WSAPROTOCOL_LEN + 1);
if (!len) if (!len)
{ {

View File

@ -224,7 +224,7 @@ void X11DRV_XIMLookupChars( const char *str, DWORD count )
WCHAR wcOutput[64]; WCHAR wcOutput[64];
HWND focus; HWND focus;
dwOutput = MultiByteToWideChar(CP_UNIXCP, 0, str, count, wcOutput, sizeof(wcOutput)); dwOutput = MultiByteToWideChar(CP_UNIXCP, 0, str, count, wcOutput, sizeof(wcOutput)/sizeof(WCHAR));
if (pImmAssociateContext && (focus = GetFocus())) if (pImmAssociateContext && (focus = GetFocus()))
pImmAssociateContext(focus,root_context); pImmAssociateContext(focus,root_context);

View File

@ -994,7 +994,7 @@ int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show
{ {
WCHAR link[MAX_PATH]; WCHAR link[MAX_PATH];
MultiByteToWideChar( CP_ACP, 0, token, -1, link, sizeof(link) ); MultiByteToWideChar( CP_ACP, 0, token, -1, link, sizeof(link)/sizeof(WCHAR) );
if( !Process_Link( link, bAgain ) ) if( !Process_Link( link, bAgain ) )
{ {
WINE_ERR( "failed to build menu item for %s\n",token); WINE_ERR( "failed to build menu item for %s\n",token);