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