From 4a5759dcc21ceff27c94b246c561b3d25f0e7784 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 7 Nov 2017 23:11:03 +0000 Subject: [PATCH] oledb32: DataConvert support DBTYPE_VARIANT -> DBTYPE_R4. Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/oledb32/convert.c | 5 +++++ dlls/oledb32/tests/convert.c | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c index 7fa4c81e483..267de1b8b96 100644 --- a/dlls/oledb32/convert.c +++ b/dlls/oledb32/convert.c @@ -343,6 +343,11 @@ static HRESULT WINAPI convert_DataConvert(IDataConvert* iface, case DBTYPE_UI4: hr = VarR4FromUI4(*(DWORD*)src, d); break; case DBTYPE_I8: hr = VarR4FromI8(*(LONGLONG*)src, d); break; case DBTYPE_UI8: hr = VarR4FromUI8(*(ULONGLONG*)src, d); break; + case DBTYPE_VARIANT: + VariantInit(&tmp); + if ((hr = VariantChangeType(&tmp, (VARIANT*)src, 0, VT_R4)) == S_OK) + *d = V_R4(&tmp); + break; default: FIXME("Unimplemented conversion %04x -> R4\n", src_type); return E_NOTIMPL; } break; diff --git a/dlls/oledb32/tests/convert.c b/dlls/oledb32/tests/convert.c index 708471be970..b45775f7b24 100644 --- a/dlls/oledb32/tests/convert.c +++ b/dlls/oledb32/tests/convert.c @@ -2580,6 +2580,15 @@ static void test_converttor4(void) ok(hr == S_OK, "got %08x\n", hr); ok(dst_status == DBSTATUS_S_ISNULL, "got %08x\n", dst_status); ok(dst_len == 44, "got %ld\n", dst_len); + + dst_len = dst = 0x1234; + V_VT(&v) = VT_I2; + V_I2(&v) = 0x4321; + hr = IDataConvert_DataConvert(convert, DBTYPE_VARIANT, DBTYPE_R4, 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_OK, "got %08x\n", dst_status); + ok(dst_len == sizeof(dst), "got %ld\n", dst_len); + ok(dst == 0x4321, "got %f\n", dst); } static void test_converttor8(void) -- 2.11.4.GIT