Jacek Caban : inetcomm: Return a new instance of stream in IMimeBody:: GetData.
Alexandre Julliard
julliard at winehq.org
Mon Jan 30 15:39:16 CST 2017
Module: wine
Branch: master
Commit: 0b8066674b465c44642d6584a5e706d6c1a590f4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0b8066674b465c44642d6584a5e706d6c1a590f4
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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(
More information about the wine-cvs
mailing list