[3/4] oledb32: Implement GetConversionSize DBTYPE_VARIANT -> DBTYPE_BYTES (try 2)
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Sat May 25 18:19:21 CDT 2013
Hi,
Corrects whitespace issue also.
Changelog:
oledb32: Implement GetConversionSize DBTYPE_VARIANT -> DBTYPE_BYTES
Best Regards
Alistair Leslie-Hughes
-------------- next part --------------
>From 67403d835cafb7dbdb4df490848cb2c3c4a7620b 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 | 15 +++++++++++++++
2 files changed, 37 insertions(+), 1 deletion(-)
diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c
index 4829ae8..a6a18e3 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:
@@ -1361,6 +1362,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 089b28c..a3884dc 100644
--- a/dlls/oledb32/tests/convert.c
+++ b/dlls/oledb32/tests/convert.c
@@ -2464,6 +2464,21 @@ 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);
+ VariantClear(&var);
}
static void test_converttobytes(void)
--
1.8.1.2
More information about the wine-patches
mailing list