Commit bd7ec9ac authored by Marcus Meissner's avatar Marcus Meissner Committed by Alexandre Julliard

The last argument to MultiByteToWideChar is wide character count and

not the buffer size in bytes. Fixed all places where it was wrong.
parent db62ddec
...@@ -579,7 +579,7 @@ INT WINAPI AddMRUStringA(HANDLE hList, LPCSTR lpszString) ...@@ -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;
......
...@@ -2161,7 +2161,7 @@ static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText) ...@@ -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
......
...@@ -6483,23 +6483,24 @@ static LRESULT TOOLBAR_TTGetDispInfo (TOOLBAR_INFO *infoPtr, NMTTDISPINFOW *lpnm ...@@ -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;
} }
} }
......
...@@ -775,8 +775,8 @@ TREEVIEW_UpdateDispInfo(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, ...@@ -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, ...@@ -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);
} }
......
...@@ -407,7 +407,7 @@ static void dump_modules(struct dump_context* dc, BOOL dump_elf) ...@@ -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)
{ {
......
...@@ -903,7 +903,7 @@ HRESULT linuxinput_get_info_W( ...@@ -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;
} }
......
...@@ -1088,8 +1088,8 @@ static HRESULT WINAPI DSPROPERTY_Enumerate1( ...@@ -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( ...@@ -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));
......
...@@ -848,7 +848,7 @@ static void LoadReplaceList(void) ...@@ -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, ...@@ -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 */
......
...@@ -625,7 +625,7 @@ static HRESULT (WINAPI *pVarParseNumFromStr)(OLECHAR*,LCID,ULONG,NUMPARSE*,BYTE* ...@@ -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)
......
...@@ -121,7 +121,7 @@ static HMODULE hOleaut32; ...@@ -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) ...@@ -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; \
......
...@@ -2755,7 +2755,7 @@ RTFFlushCPOutputBuffer(RTF_Info *info) ...@@ -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);
......
...@@ -52,7 +52,7 @@ CHARFORMAT2W *ME_ToCF2W(CHARFORMAT2W *to, CHARFORMAT2W *from) ...@@ -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);
......
...@@ -620,7 +620,7 @@ static PSecPkgInfoW _copyPackageInfoFlatAToW(PSecPkgInfoA infoA) ...@@ -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;
......
...@@ -951,8 +951,7 @@ static struct inf_file *parse_file( HANDLE handle, const WCHAR *class, UINT *err ...@@ -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 );
} }
......
...@@ -134,7 +134,7 @@ LONG WINAPI SHRegOpenUSKeyW(LPCWSTR Path, REGSAM AccessType, HUSKEY hRelativeUSK ...@@ -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)
{ {
......
...@@ -1810,7 +1810,7 @@ HRESULT WINAPI SHStrDupA(LPCSTR lpszStr, LPWSTR * lppszDest) ...@@ -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
......
...@@ -3452,7 +3452,7 @@ static WINMM_MapType MCI_UnMapMsg32WTo16(WORD uDevType, WORD wMsg, DWORD dwFlag ...@@ -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) );
......
...@@ -603,7 +603,7 @@ UINT WINAPI mixerGetLineInfoA(HMIXEROBJ hmix, LPMIXERLINEA lpmliA, ...@@ -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);
......
...@@ -3082,7 +3082,7 @@ SOCKET WINAPI WSASocketA(int af, int type, int protocol, ...@@ -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)
{ {
......
...@@ -224,7 +224,7 @@ void X11DRV_XIMLookupChars( const char *str, DWORD count ) ...@@ -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);
......
...@@ -994,7 +994,7 @@ int PASCAL WinMain (HINSTANCE hInstance, HINSTANCE prev, LPSTR cmdline, int show ...@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment