From 3dcf22e03fb4473db112bcd47671b37a037cbfc6 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Sat, 7 Jun 2008 17:10:00 +0200 Subject: [PATCH] winebrowser: Convert URL obtained through DdeGetData to Unicode. --- programs/winebrowser/main.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/programs/winebrowser/main.c b/programs/winebrowser/main.c index 20d6b72fa3..3ad24ae940 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))) -- 2.32.0.93.g670b81a890