diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c index 98372ff2aae..b01601681dd 100644 --- a/dlls/msxml3/httprequest.c +++ b/dlls/msxml3/httprequest.c @@ -865,7 +865,11 @@ static HRESULT WINAPI httprequest_get_responseText(IXMLHTTPRequest *iface, BSTR if (encoding == XML_CHAR_ENCODING_UTF8 || encoding == XML_CHAR_ENCODING_NONE ) { - *body = bstr_from_xmlChar(ptr); + DWORD length = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)ptr, size, NULL, 0); + + *body = SysAllocStringLen(NULL, length); + if (*body) + MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)ptr, size, *body, length); } else *body = SysAllocStringByteLen((LPCSTR)ptr, size); diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 4cb9abe5a69..fd56c611642 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -3354,7 +3354,7 @@ if (0) * not what the server expects */ if(hr == S_OK) { - todo_wine ok(!memcmp(bstrResponse, wszExpectedResponse, sizeof(wszExpectedResponse)), + ok(!memcmp(bstrResponse, wszExpectedResponse, sizeof(wszExpectedResponse)), "expected %s, got %s\n", wine_dbgstr_w(wszExpectedResponse), wine_dbgstr_w(bstrResponse)); SysFreeString(bstrResponse); }