[PATCH 1/2] oledb32: Implement support for converting to DBTYPE_I1.
Owen Rudge <[email protected]> Wed, 29 May 2019 23:41:36 +0100
| Newsgroups | gmane.comp.emulators.wine.patches |
|---|---|
| Organization | CodeWeavers |
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------29A67CE19F0E3CF62A230910 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Signed-off-by: Owen Rudge <[email protected]> --- dlls/oledb32/convert.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) --------------29A67CE19F0E3CF62A230910 Content-Type: text/x-patch; name="0001-oledb32-Implement-support-for-converting-to-DBTYPE_I.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0001-oledb32-Implement-support-for-converting-to-DBTYPE_I.pa"; filename*1="tch" diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c index f18c756f4c..566171acc9 100644 --- a/dlls/oledb32/convert.c +++ b/dlls/oledb32/convert.c @@ -249,6 +249,37 @@ static HRESULT WINAPI convert_DataConvert(IDataConvert* iface, switch(dst_type) { + case DBTYPE_I1: + { + signed char *d = dst; + switch(src_type) + { + case DBTYPE_EMPTY: *d = 0; hr = S_OK; break; + case DBTYPE_I1: *d = *(signed char*)src; hr = S_OK; break; + case DBTYPE_I2: hr = VarI1FromI2(*(signed short*)src, d); hr = S_OK; break; + case DBTYPE_I4: hr = VarI1FromI4(*(signed int*)src, d); break; + case DBTYPE_R4: hr = VarI1FromR4(*(FLOAT*)src, d); break; + case DBTYPE_R8: hr = VarI1FromR8(*(double*)src, d); break; + case DBTYPE_CY: hr = VarI1FromCy(*(CY*)src, d); break; + case DBTYPE_DATE: hr = VarI1FromDate(*(DATE*)src, d); break; + case DBTYPE_BSTR: hr = VarI1FromStr(*(WCHAR**)src, LOCALE_USER_DEFAULT, 0, d); break; + case DBTYPE_BOOL: hr = VarI1FromBool(*(VARIANT_BOOL*)src, d); break; + case DBTYPE_DECIMAL: hr = VarI1FromDec((DECIMAL*)src, d); break; + case DBTYPE_UI1: hr = VarI1FromUI1(*(BYTE*)src, d); break; + case DBTYPE_UI2: hr = VarI1FromUI2(*(WORD*)src, d); break; + case DBTYPE_UI4: hr = VarI1FromUI4(*(DWORD*)src, d); break; + case DBTYPE_I8: hr = VarI1FromI8(*(LONGLONG*)src, d); break; + case DBTYPE_UI8: hr = VarI1FromUI8(*(ULONGLONG*)src, d); break; + case DBTYPE_VARIANT: + VariantInit(&tmp); + if ((hr = VariantChangeType(&tmp, (VARIANT*)src, 0, VT_I1)) == S_OK) + *d = V_I1(&tmp); + break; + default: FIXME("Unimplemented conversion %04x -> I1\n", src_type); return E_NOTIMPL; + } + break; + } + case DBTYPE_I2: { signed short *d = dst; --------------29A67CE19F0E3CF62A230910 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline Cg== --------------29A67CE19F0E3CF62A230910--