Nikolay Sivov : msxml3/mxwriter: Handle allocation failure in get_output() .
Module: wine Branch: master Commit: 67efaac30f228aa924bff1642d9b32d83ecd734d URL: http://source.winehq.org/git/wine.git/?a=commit;h=67efaac30f228aa924bff1642d... Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Sun Mar 27 17:23:01 2016 +0300 msxml3/mxwriter: Handle allocation failure in get_output(). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msxml3/mxwriter.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c index d6f23e2..23a8fd1 100644 --- a/dlls/msxml3/mxwriter.c +++ b/dlls/msxml3/mxwriter.c @@ -944,7 +944,14 @@ static HRESULT WINAPI mxwriter_get_output(IMXWriter *iface, VARIANT *dest) if (!dest) return E_POINTER; - if (!This->dest) + if (This->dest) + { + /* we only support IStream output so far */ + V_VT(dest) = VT_UNKNOWN; + V_UNKNOWN(dest) = (IUnknown*)This->dest; + IStream_AddRef(This->dest); + } + else { encoded_buffer *buff; char *dest_ptr; @@ -956,6 +963,8 @@ static HRESULT WINAPI mxwriter_get_output(IMXWriter *iface, VARIANT *dest) V_VT(dest) = VT_BSTR; V_BSTR(dest) = SysAllocStringLen(NULL, This->buffer.utf16_total / sizeof(WCHAR)); + if (!V_BSTR(dest)) + return E_OUTOFMEMORY; dest_ptr = (char*)V_BSTR(dest); buff = &This->buffer.utf16; @@ -971,15 +980,8 @@ static HRESULT WINAPI mxwriter_get_output(IMXWriter *iface, VARIANT *dest) memcpy(dest_ptr, buff->data, buff->written); dest_ptr += buff->written; } - - return S_OK; } - /* we only support IStream output so far */ - V_VT(dest) = VT_UNKNOWN; - V_UNKNOWN(dest) = (IUnknown*)This->dest; - IStream_AddRef(This->dest); - return S_OK; }
participants (1)
-
Alexandre Julliard