Module: wine Branch: master Commit: 3dcf22e03fb4473db112bcd47671b37a037cbfc6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3dcf22e03fb4473db112bcd476...
Author: Hans Leidekker hans@it.vu.nl Date: Sat Jun 7 17:10:00 2008 +0200
winebrowser: Convert URL obtained through DdeGetData to Unicode.
---
programs/winebrowser/main.c | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/programs/winebrowser/main.c b/programs/winebrowser/main.c index 20d6b72..3ad24ae 100644 --- a/programs/winebrowser/main.c +++ b/programs/winebrowser/main.c @@ -190,15 +190,27 @@ static HDDEDATA CALLBACK ddeCb(UINT uType, UINT uFmt, HCONV hConv, return (HDDEDATA)FALSE;
case XTYP_EXECUTE: + { + char *buffer = NULL; + if (!(size = DdeGetData(hData, NULL, 0, 0))) WINE_ERR("DdeGetData returned zero size of execute string\n"); - else if (!(ddeString = HeapAlloc(GetProcessHeap(), 0, size))) + else if (!(buffer = HeapAlloc(GetProcessHeap(), 0, size))) WINE_ERR("Out of memory\n"); - else if (DdeGetData(hData, (LPBYTE)ddeString, size, 0) != size) + else if (DdeGetData(hData, (LPBYTE)buffer, size, 0) != size) WINE_WARN("DdeGetData did not return %d bytes\n", size); + else + { + int len = MultiByteToWideChar(CP_ACP, 0, buffer, -1, NULL, 0); + if (!(ddeString = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)))) + WINE_ERR("Out of memory\n"); + else + MultiByteToWideChar(CP_ACP, 0, buffer, -1, ddeString, len); + } + HeapFree(GetProcessHeap(), 0, buffer); DdeFreeDataHandle(hData); return (HDDEDATA)DDE_FACK; - + } case XTYP_REQUEST: ret = -3; /* error */ if (!(size = DdeQueryStringW(ddeInst, hsz2, NULL, 0, CP_WINUNICODE)))