From 2dd4e497d6046252f6641b9670f06d9795be33cd Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 10 May 2013 14:21:41 +0200 Subject: [PATCH] msxml3: Correctly handle VT_NULL in IXMLHTTPRequest::send. --- dlls/msxml3/httprequest.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c index 682381dcb15..e2ede0e8129 100644 --- a/dlls/msxml3/httprequest.c +++ b/dlls/msxml3/httprequest.c @@ -736,27 +736,31 @@ static HRESULT BindStatusCallback_create(httprequest* This, BindStatusCallback * /* fall through */ case VT_EMPTY: case VT_ERROR: + case VT_NULL: ptr = NULL; size = 0; break; } - bsc->body = GlobalAlloc(GMEM_FIXED, size); - if (!bsc->body) + if (size) { - if (V_VT(body) == VT_BSTR) - heap_free(ptr); - else if (V_VT(body) == (VT_ARRAY|VT_UI1)) - SafeArrayUnaccessData(sa); + bsc->body = GlobalAlloc(GMEM_FIXED, size); + if (!bsc->body) + { + if (V_VT(body) == VT_BSTR) + heap_free(ptr); + else if (V_VT(body) == (VT_ARRAY|VT_UI1)) + SafeArrayUnaccessData(sa); - heap_free(bsc); - return E_OUTOFMEMORY; + heap_free(bsc); + return E_OUTOFMEMORY; + } + + send_data = GlobalLock(bsc->body); + memcpy(send_data, ptr, size); + GlobalUnlock(bsc->body); } - send_data = GlobalLock(bsc->body); - memcpy(send_data, ptr, size); - GlobalUnlock(bsc->body); - if (V_VT(body) == VT_BSTR) heap_free(ptr); else if (V_VT(body) == (VT_ARRAY|VT_UI1))