Jacek Caban : inetcomm: Return a new instance of stream in IMimeBody:: GetData.
Module: wine Branch: master Commit: 0b8066674b465c44642d6584a5e706d6c1a590f4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0b8066674b465c44642d6584a5... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Fri Jan 27 15:59:35 2017 +0100 inetcomm: Return a new instance of stream in IMimeBody::GetData. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/inetcomm/mimeole.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c index 74b834c..0f0da61 100644 --- a/dlls/inetcomm/mimeole.c +++ b/dlls/inetcomm/mimeole.c @@ -442,6 +442,22 @@ static HRESULT create_sub_stream(IStream *stream, ULARGE_INTEGER start, ULARGE_I return S_OK; } +static HRESULT get_stream_size(IStream *stream, ULARGE_INTEGER *size) +{ + STATSTG statstg = {NULL}; + LARGE_INTEGER zero; + HRESULT hres; + + hres = IStream_Stat(stream, &statstg, STATFLAG_NONAME); + if(SUCCEEDED(hres)) { + *size = statstg.cbSize; + return S_OK; + } + + zero.QuadPart = 0; + return IStream_Seek(stream, zero, STREAM_SEEK_END, size); +} + static inline MimeBody *impl_from_IMimeBody(IMimeBody *iface) { return CONTAINING_RECORD(iface, MimeBody, IMimeBody_iface); @@ -1505,11 +1521,16 @@ static HRESULT WINAPI MimeBody_GetData( IStream** ppStream) { MimeBody *This = impl_from_IMimeBody(iface); + ULARGE_INTEGER start, size; + HRESULT hres; + FIXME("(%p)->(%d, %p). Ignoring encoding type.\n", This, ietEncoding, ppStream); - *ppStream = This->data; - IStream_AddRef(*ppStream); - return S_OK; + start.QuadPart = 0; + hres = get_stream_size(This->data, &size); + if(SUCCEEDED(hres)) + hres = create_sub_stream(This->data, start, size, ppStream); + return hres; } static HRESULT WINAPI MimeBody_SetData(
participants (1)
-
Alexandre Julliard