[4/5] oledb32: Implement GetConversionSize DBTYPE_VARIANT -> DBTYPE_BYTES
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Fri May 24 03:04:48 CDT 2013
Hi,
Also fixes whitespace issue.
Changelog:
oledb32: Implement GetConversionSize DBTYPE_VARIANT -> DBTYPE_BYTES
Best Regards
Alistair Leslie-Hughes
-------------- next part --------------
>From 698ad87175abeb6c6b85e42dd4302810e7055ff2 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Tue, 21 May 2013 20:39:09 +1000
Subject: [PATCH] Implement GetConversionSize DBTYPE_VARIANT -> DBTYPE_BYTES
To: wine-patches <wine-patches at winehq.org>
---
dlls/oledb32/convert.c | 23 ++++++++++++++++++++++-
dlls/oledb32/tests/convert.c | 16 ++++++++++++++++
2 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c
index beca387..fd98b31 100644
--- a/dlls/oledb32/convert.c
+++ b/dlls/oledb32/convert.c
@@ -121,7 +121,7 @@ static int get_length(DBTYPE type)
case DBTYPE_UI2:
return 2;
case DBTYPE_BOOL:
- return sizeof(VARIANT_BOOL);
+ return sizeof(VARIANT_BOOL);
case DBTYPE_I4:
case DBTYPE_UI4:
case DBTYPE_R4:
@@ -143,6 +143,7 @@ static int get_length(DBTYPE type)
return sizeof(FILETIME);
case DBTYPE_GUID:
return sizeof(GUID);
+ case DBTYPE_BYTES:
case DBTYPE_WSTR:
case DBTYPE_STR:
case DBTYPE_BYREF | DBTYPE_WSTR:
@@ -1378,6 +1379,26 @@ static HRESULT WINAPI convert_GetConversionSize(IDataConvert* iface,
}
}
break;
+ case DBTYPE_BYTES:
+ {
+ switch (src_type)
+ {
+ case DBTYPE_VARIANT:
+ {
+ if(V_VT((VARIANT*)src) == VT_BSTR)
+ *dst_len = (SysStringLen(V_BSTR((VARIANT*)src))) / sizeof(WCHAR);
+ else
+ WARN("DBTYPE_BYTES->DBTYPE_VARIANT(%d) unimplemented\n", V_VT((VARIANT*)src));
+
+ return S_OK;
+ }
+ break;
+ default:
+ FIXME("unimplemented for %04x -> DBTYPE_BYTES\n", src_type);
+ return E_NOTIMPL;
+ }
+ }
+ break;
default:
FIXME("unimplemented for conversion %d->%d\n", src_type, dst_type);
return E_NOTIMPL;
diff --git a/dlls/oledb32/tests/convert.c b/dlls/oledb32/tests/convert.c
index aee27b8..3a25777 100644
--- a/dlls/oledb32/tests/convert.c
+++ b/dlls/oledb32/tests/convert.c
@@ -2469,6 +2469,22 @@ static void test_getconversionsize(void)
todo_wine ok(dst_len == 110, "%ld\n", dst_len);
VariantClear(&var);
+ dst_len = 0;
+ src_len = 20;
+ V_VT(&var) = VT_BSTR;
+ V_BSTR(&var) = SysAllocString(strW);
+ hr = IDataConvert_GetConversionSize(convert, DBTYPE_VARIANT, DBTYPE_BYTES, &src_len, &dst_len, &var);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(dst_len == 2, "%ld\n", dst_len);
+ VariantClear(&var);
+
+ dst_len = 0;
+ src_len = 20;
+ V_VT(&var) = VT_NULL;
+ hr = IDataConvert_GetConversionSize(convert, DBTYPE_VARIANT, DBTYPE_BYTES, &src_len, &dst_len, &var);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ todo_wine ok(dst_len == 110, "%ld\n", dst_len);
+ VariantClear(&var);
}
static void test_converttobytes(void)
--
1.8.1.2
More information about the wine-patches
mailing list