Module: wine Branch: master Commit: 2dd4e497d6046252f6641b9670f06d9795be33cd URL: http://source.winehq.org/git/wine.git/?a=commit;h=2dd4e497d6046252f6641b9670...
Author: Jacek Caban jacek@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);