oledb32: Support VT_NULL when converting to DBTYPE_BSTR.
This commit is contained in:
parent
c8d4b1cc5e
commit
d3c3a38f69
@ -534,9 +534,18 @@ static HRESULT WINAPI convert_DataConvert(IDataConvert* iface,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DBTYPE_VARIANT:
|
case DBTYPE_VARIANT:
|
||||||
VariantInit(&tmp);
|
if(V_VT((VARIANT*)src) == VT_NULL)
|
||||||
if ((hr = VariantChangeType(&tmp, (VARIANT*)src, 0, VT_BSTR)) == S_OK)
|
{
|
||||||
*d = V_BSTR(&tmp);
|
*dst_status = DBSTATUS_S_ISNULL;
|
||||||
|
*dst_len = get_length(DBTYPE_BSTR);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VariantInit(&tmp);
|
||||||
|
if ((hr = VariantChangeType(&tmp, (VARIANT*)src, 0, VT_BSTR)) == S_OK)
|
||||||
|
*d = V_BSTR(&tmp);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default: FIXME("Unimplemented conversion %04x -> BSTR\n", src_type); return E_NOTIMPL;
|
default: FIXME("Unimplemented conversion %04x -> BSTR\n", src_type); return E_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
@ -977,6 +977,14 @@ static void test_converttobstr(void)
|
|||||||
ok(!lstrcmpW(b, dst), "got %s\n", wine_dbgstr_w(dst));
|
ok(!lstrcmpW(b, dst), "got %s\n", wine_dbgstr_w(dst));
|
||||||
SysFreeString(dst);
|
SysFreeString(dst);
|
||||||
SysFreeString(b);
|
SysFreeString(b);
|
||||||
|
|
||||||
|
V_VT(&v) = VT_NULL;
|
||||||
|
dst = (void*)0x1234;
|
||||||
|
hr = IDataConvert_DataConvert(convert, DBTYPE_VARIANT, DBTYPE_BSTR, 0, &dst_len, &v, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
|
||||||
|
ok(hr == S_OK, "got %08x\n", hr);
|
||||||
|
ok(dst_status == DBSTATUS_S_ISNULL, "got %08x\n", dst_status);
|
||||||
|
ok(dst_len == sizeof(BSTR), "got %ld\n", dst_len);
|
||||||
|
ok(dst == (void*)0x1234, "got %p\n", dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_converttowstr(void)
|
static void test_converttowstr(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user