Module: wine Branch: master Commit: 2dd4e497d6046252f6641b9670f06d9795be33cd URL: http://source.winehq.org/git/wine.git/?a=commit;h=2dd4e497d6046252f6641b9670... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri May 10 14:21:41 2013 +0200 msxml3: Correctly handle VT_NULL in IXMLHTTPRequest::send. --- dlls/msxml3/httprequest.c | 28 ++++++++++++++++------------ 1 files changed, 16 insertions(+), 12 deletions(-) diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c index 682381d..e2ede0e 100644 --- a/dlls/msxml3/httprequest.c +++ b/dlls/msxml3/httprequest.c @@ -736,26 +736,30 @@ 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);