oledb32: Implement GetConversionSize DBTYPE_WSTR->DBTYPE_WSTR (try 3)
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Mon Apr 22 05:15:54 CDT 2013
Hi,
Corrected default format string.
Changelog:
oledb32: Implement GetConversionSize DBTYPE_WSTR->DBTYPE_WSTR
Best Regards
Alistair Leslie-Hughes
-------------- next part --------------
>From c29207bb7036878936c2f41a28ff200880a914dc Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Fri, 19 Apr 2013 14:22:10 +1000
Subject: [PATCH] Implement GetConversionSize DBTYPE_WSTR->DBTYPE_WSTR
To: wine-patches <wine-patches at winehq.org>
---
dlls/oledb32/convert.c | 16 ++++++++++++++++
dlls/oledb32/tests/convert.c | 19 +++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c
index 3b3f9df..b55c0d9 100644
--- a/dlls/oledb32/convert.c
+++ b/dlls/oledb32/convert.c
@@ -1095,6 +1095,22 @@ static HRESULT WINAPI convert_GetConversionSize(IDataConvert* iface,
}
}
break;
+ case DBTYPE_WSTR:
+ {
+ switch (src_type)
+ {
+ case DBTYPE_WSTR:
+ if(src_len)
+ *dst_len = (*src_len) + sizeof(WCHAR);
+ else
+ *dst_len = (lstrlenW(src) + 1) * sizeof(WCHAR);
+ break;
+ default:
+ FIXME("unimplemented for %04x -> DBTYPE_WSTR\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 4f50a77..65bd075 100644
--- a/dlls/oledb32/tests/convert.c
+++ b/dlls/oledb32/tests/convert.c
@@ -2480,8 +2480,10 @@ static void test_getconversionsize(void)
{
IDataConvert *convert;
DBLENGTH dst_len;
+ DBLENGTH src_len;
HRESULT hr;
BSTR str;
+ static WCHAR strW[] = {'t','e','s','t',0};
hr = CoCreateInstance(&CLSID_OLEDB_CONVERSIONLIBRARY, NULL, CLSCTX_INPROC_SERVER, &IID_IDataConvert, (void**)&convert);
if(FAILED(hr))
@@ -2511,6 +2513,23 @@ static void test_getconversionsize(void)
ok(dst_len == sizeof(VARIANT), "%ld\n", dst_len);
SysFreeString(str);
+ dst_len = 0;
+ hr = IDataConvert_GetConversionSize(convert, DBTYPE_WSTR, DBTYPE_WSTR, NULL, &dst_len, strW);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(dst_len == 10, "%ld\n", dst_len);
+
+ dst_len = 0;
+ src_len = 2;
+ hr = IDataConvert_GetConversionSize(convert, DBTYPE_WSTR, DBTYPE_WSTR, &src_len, &dst_len, strW);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(dst_len == 4, "%ld\n", dst_len);
+
+ dst_len = 0;
+ src_len = 20;
+ hr = IDataConvert_GetConversionSize(convert, DBTYPE_WSTR, DBTYPE_WSTR, &src_len, &dst_len, strW);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(dst_len == 22, "%ld\n", dst_len);
+
IDataConvert_Release(convert);
}
--
1.7.10.4
More information about the wine-patches
mailing list