[PATCH] inetcomm: IMimeMessage has a HBODY_ROOT node by default.

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Thu Apr 14 05:11:14 CDT 2016


Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
 dlls/inetcomm/mimeole.c       |  8 ++++++++
 dlls/inetcomm/tests/mimeole.c | 22 ++++++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/dlls/inetcomm/mimeole.c b/dlls/inetcomm/mimeole.c
index d63da8c..36c3ec9 100644
--- a/dlls/inetcomm/mimeole.c
+++ b/dlls/inetcomm/mimeole.c
@@ -1706,6 +1706,8 @@ static HRESULT WINAPI MimeMessage_Load(IMimeMessage *iface, IStream *pStm)
         return E_FAIL;
     }
 
+    empty_body_list(&This->body_tree);
+
     IStream_AddRef(pStm);
     This->stream = pStm;
     offsets.cbBoundaryStart = offsets.cbHeaderStart = 0;
@@ -2544,6 +2546,8 @@ static const IMimeMessageVtbl MimeMessageVtbl =
 HRESULT MimeMessage_create(IUnknown *outer, void **obj)
 {
     MimeMessage *This;
+    MimeBody *mime_body;
+    body_t *root_body;
 
     TRACE("(%p, %p)\n", outer, obj);
 
@@ -2564,6 +2568,10 @@ HRESULT MimeMessage_create(IUnknown *outer, void **obj)
     list_init(&This->body_tree);
     This->next_index = 1;
 
+    mime_body = mimebody_create();
+    root_body = new_body_entry(mime_body, This->next_index++, NULL);
+    list_add_head(&This->body_tree, &root_body->entry);
+
     *obj = &This->IMimeMessage_iface;
     return S_OK;
 }
diff --git a/dlls/inetcomm/tests/mimeole.c b/dlls/inetcomm/tests/mimeole.c
index 7e98563..2b6dee2 100644
--- a/dlls/inetcomm/tests/mimeole.c
+++ b/dlls/inetcomm/tests/mimeole.c
@@ -332,6 +332,27 @@ static void test_CreateMessage(void)
     IStream_Release(stream);
 }
 
+void test_BindToObject(void)
+{
+    HRESULT hr;
+    IMimeMessage *msg;
+    IMimeBody *body;
+    ULONG count;
+
+    hr = MimeOleCreateMessage(NULL, &msg);
+    ok(hr == S_OK, "ret %08x\n", hr);
+
+    hr = IMimeMessage_CountBodies(msg, HBODY_ROOT, TRUE, &count);
+    ok(hr == S_OK, "ret %08x\n", hr);
+    ok(count == 1, "got %d\n", count);
+
+    hr = IMimeMessage_BindToObject(msg, HBODY_ROOT, &IID_IMimeBody, (void**)&body);
+    ok(hr == S_OK, "ret %08x\n", hr);
+    IMimeBody_Release(body);
+
+    IMimeMessage_Release(msg);
+}
+
 START_TEST(mimeole)
 {
     OleInitialize(NULL);
@@ -340,5 +361,6 @@ START_TEST(mimeole)
     test_CreateBody();
     test_Allocator();
     test_CreateMessage();
+    test_BindToObject();
     OleUninitialize();
 }
-- 
2.8.0.rc3




More information about the wine-patches mailing list