Commit 16231678 authored by Alistair Leslie-Hughes's avatar Alistair Leslie-Hughes Committed by Alexandre Julliard

inetcomm: Support LPSTR to LPWSTR conversion in GetProp.

parent bf026723
MODULE = inetcomm.dll MODULE = inetcomm.dll
IMPORTLIB = inetcomm IMPORTLIB = inetcomm
IMPORTS = uuid oleaut32 ole32 ws2_32 user32 advapi32 IMPORTS = uuid propsys oleaut32 ole32 ws2_32 user32 advapi32
C_SRCS = \ C_SRCS = \
imaptransport.c \ imaptransport.c \
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "objbase.h" #include "objbase.h"
#include "ole2.h" #include "ole2.h"
#include "mimeole.h" #include "mimeole.h"
#include "propvarutil.h"
#include "wine/list.h" #include "wine/list.h"
#include "wine/debug.h" #include "wine/debug.h"
...@@ -785,7 +786,11 @@ static HRESULT WINAPI MimeBody_GetProp( ...@@ -785,7 +786,11 @@ static HRESULT WINAPI MimeBody_GetProp(
hr = find_prop(This, pszName, &header); hr = find_prop(This, pszName, &header);
if(hr == S_OK) if(hr == S_OK)
{ {
PropVariantCopy(pValue, &header->value); TRACE("type %d->%d\n", header->value.vt, pValue->vt);
hr = PropVariantChangeType(pValue, &header->value, 0, pValue->vt);
if(FAILED(hr))
FIXME("Conversion not currently supported (%d->%d)\n", header->value.vt, pValue->vt);
} }
return hr; return hr;
......
...@@ -335,6 +335,7 @@ static void test_CreateMessage(void) ...@@ -335,6 +335,7 @@ static void test_CreateMessage(void)
static void test_MessageSetProp(void) static void test_MessageSetProp(void)
{ {
static const char topic[] = "wine topic"; static const char topic[] = "wine topic";
static const WCHAR topicW[] = {'w','i','n','e',' ','t','o','p','i','c',0};
HRESULT hr; HRESULT hr;
IMimeMessage *msg; IMimeMessage *msg;
IMimeBody *body; IMimeBody *body;
...@@ -370,6 +371,7 @@ static void test_MessageSetProp(void) ...@@ -370,6 +371,7 @@ static void test_MessageSetProp(void)
hr = IMimeBody_GetProp(body, "Wine-Topic", 0, &prop); hr = IMimeBody_GetProp(body, "Wine-Topic", 0, &prop);
ok(hr == MIME_E_NOT_FOUND, "ret %08x\n", hr); ok(hr == MIME_E_NOT_FOUND, "ret %08x\n", hr);
prop.vt = VT_LPSTR;
hr = IMimeBody_GetProp(body, "Thread-Topic", 0, &prop); hr = IMimeBody_GetProp(body, "Thread-Topic", 0, &prop);
ok(hr == S_OK, "ret %08x\n", hr); ok(hr == S_OK, "ret %08x\n", hr);
if(hr == S_OK) if(hr == S_OK)
...@@ -386,6 +388,7 @@ static void test_MessageSetProp(void) ...@@ -386,6 +388,7 @@ static void test_MessageSetProp(void)
ok(hr == S_OK, "ret %08x\n", hr); ok(hr == S_OK, "ret %08x\n", hr);
PropVariantClear(&prop); PropVariantClear(&prop);
prop.vt = VT_LPSTR;
hr = IMimeBody_GetProp(body, PIDTOSTR(PID_HDR_SUBJECT), 0, &prop); hr = IMimeBody_GetProp(body, PIDTOSTR(PID_HDR_SUBJECT), 0, &prop);
ok(hr == S_OK, "ret %08x\n", hr); ok(hr == S_OK, "ret %08x\n", hr);
if(hr == S_OK) if(hr == S_OK)
...@@ -396,6 +399,7 @@ static void test_MessageSetProp(void) ...@@ -396,6 +399,7 @@ static void test_MessageSetProp(void)
} }
/* Using the name or PID returns the same result. */ /* Using the name or PID returns the same result. */
prop.vt = VT_LPSTR;
hr = IMimeBody_GetProp(body, "Subject", 0, &prop); hr = IMimeBody_GetProp(body, "Subject", 0, &prop);
ok(hr == S_OK, "ret %08x\n", hr); ok(hr == S_OK, "ret %08x\n", hr);
if(hr == S_OK) if(hr == S_OK)
...@@ -405,6 +409,16 @@ static void test_MessageSetProp(void) ...@@ -405,6 +409,16 @@ static void test_MessageSetProp(void)
PropVariantClear(&prop); PropVariantClear(&prop);
} }
prop.vt = VT_LPWSTR;
hr = IMimeBody_GetProp(body, "Subject", 0, &prop);
ok(hr == S_OK, "ret %08x\n", hr);
if(hr == S_OK)
{
ok(prop.vt == VT_LPWSTR, "type %d\n", prop.vt);
ok(!lstrcmpW(prop.u.pwszVal, topicW), "got %s\n", wine_dbgstr_w(prop.u.pwszVal));
PropVariantClear(&prop);
}
prop.vt = VT_LPSTR; prop.vt = VT_LPSTR;
prop.u.pszVal = CoTaskMemAlloc(strlen(topic)+1); prop.u.pszVal = CoTaskMemAlloc(strlen(topic)+1);
strcpy(prop.u.pszVal, topic); strcpy(prop.u.pszVal, topic);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment