Alistair Leslie-Hughes : msado15: Support VT_I4/I2 for Fields Item property.
Alexandre Julliard
julliard at winehq.org
Tue Jun 8 16:34:26 CDT 2021
Module: wine
Branch: master
Commit: 38f01fe2cb8a36a7ff6f1f3a0395631fa3468699
URL: https://source.winehq.org/git/wine.git/?a=commit;h=38f01fe2cb8a36a7ff6f1f3a0395631fa3468699
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Tue Jun 8 14:22:56 2021 +1000
msado15: Support VT_I4/I2 for Fields Item property.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msado15/recordset.c | 16 ++++++++++++++++
dlls/msado15/tests/msado15.c | 17 +++++++++++++++++
2 files changed, 33 insertions(+)
diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c
index 8d7619d9161..7cd943f55d5 100644
--- a/dlls/msado15/recordset.c
+++ b/dlls/msado15/recordset.c
@@ -740,6 +740,22 @@ static HRESULT map_index( struct fields *fields, VARIANT *index, ULONG *ret )
{
ULONG i;
+ if (V_VT( index ) == VT_I4 || V_VT( index ) == VT_I2)
+ {
+ if (V_VT( index ) == VT_I4)
+ i = V_I4 ( index );
+ else
+ i = V_I2 ( index );
+
+ if (i < fields->count)
+ {
+ *ret = i;
+ return S_OK;
+ }
+
+ return MAKE_ADO_HRESULT(adErrItemNotFound);
+ }
+
if (V_VT( index ) != VT_BSTR)
{
FIXME( "variant type %u not supported\n", V_VT( index ) );
diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c
index 97a578b0618..860144338c0 100644
--- a/dlls/msado15/tests/msado15.c
+++ b/dlls/msado15/tests/msado15.c
@@ -133,6 +133,23 @@ static void test_Recordset(void)
hr = Fields__Append( fields, name, adInteger, 4, adFldUnspecified );
ok( hr == S_OK, "got %08x\n", hr );
+ V_VT( &index ) = VT_I4;
+ V_I4( &index ) = 1000;
+ hr = Fields_get_Item( fields, index, &field );
+ ok( hr == MAKE_ADO_HRESULT(adErrItemNotFound), "got %08x\n", hr );
+
+ V_VT( &index ) = VT_I4;
+ V_I4( &index ) = 0;
+ hr = Fields_get_Item( fields, index, &field );
+ ok( hr == S_OK, "got %08x\n", hr );
+ Field_Release(field);
+
+ V_VT( &index ) = VT_I2;
+ V_I4( &index ) = 0;
+ hr = Fields_get_Item( fields, index, &field );
+ ok( hr == S_OK, "got %08x\n", hr );
+ Field_Release(field);
+
V_VT( &index ) = VT_BSTR;
V_BSTR( &index ) = name;
hr = Fields_get_Item( fields, index, &field );
More information about the wine-cvs
mailing list