diff --git a/windows/winproc.c b/windows/winproc.c index d07720614bb..1bb9bb99962 100644 --- a/windows/winproc.c +++ b/windows/winproc.c @@ -594,13 +594,13 @@ INT WINPROC_MapMsg32ATo32W( HWND hwnd, UINT msg, WPARAM *pwparam, LPARAM *plpara case LB_DIR: case LB_ADDFILE: case EM_REPLACESEL: - { - UNICODE_STRING usBuffer; - if(!*plparam) return 0; - RtlCreateUnicodeStringFromAsciiz(&usBuffer,(LPCSTR)*plparam); - *plparam = (LPARAM)usBuffer.Buffer; - return (*plparam ? 1 : -1); - } + { + DWORD len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)*plparam, -1, NULL, 0); + WCHAR *buf = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)*plparam, -1, buf, len); + *plparam = (LPARAM)buf; + return (*plparam ? 1 : -1); + } case WM_GETTEXTLENGTH: case CB_GETLBTEXTLEN: case LB_GETTEXTLEN: