Nikolay Sivov : msxml3/mxwriter: Handle allocation failure in get_output() .
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Mar 28 09:12:36 CDT 2016
Module: wine
Branch: master
Commit: 67efaac30f228aa924bff1642d9b32d83ecd734d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=67efaac30f228aa924bff1642d9b32d83ecd734d
Author: Nikolay Sivov <nsivov at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
}
More information about the wine-cvs
mailing list