[PATCH] msado15: Use a 64-bit type for DefinedSize on amd64.

Bernhard Übelacker bernhardu at mailbox.org
Tue Dec 21 13:20:58 CST 2021


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50842
Signed-off-by: Bernhard Übelacker <bernhardu at mailbox.org>
---
 dlls/msado15/recordset.c       | 8 ++++----
 dlls/msado15/tests/msado15.c   | 9 +++++----
 include/msado15_backcompat.idl | 4 ++--
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/dlls/msado15/recordset.c b/dlls/msado15/recordset.c
index 92a0deb6959..61b7ebb596a 100644
--- a/dlls/msado15/recordset.c
+++ b/dlls/msado15/recordset.c
@@ -69,7 +69,7 @@ struct field
     LONG                refs;
     WCHAR              *name;
     DataTypeEnum        type;
-    LONG                defined_size;
+    LONG_PTR            defined_size;
     LONG                attrs;
     LONG                index;
     struct recordset   *recordset;
@@ -211,7 +211,7 @@ static HRESULT WINAPI field_get_Attributes( Field *iface, LONG *attrs )
     return S_OK;
 }
 
-static HRESULT WINAPI field_get_DefinedSize( Field *iface, LONG *size )
+static HRESULT WINAPI field_get_DefinedSize( Field *iface, LONG_PTR *size )
 {
     struct field *field = impl_from_Field( iface );
 
@@ -360,11 +360,11 @@ static HRESULT WINAPI field_put_Type( Field *iface, DataTypeEnum type )
     return S_OK;
 }
 
-static HRESULT WINAPI field_put_DefinedSize( Field *iface, LONG size )
+static HRESULT WINAPI field_put_DefinedSize( Field *iface, LONG_PTR size )
 {
     struct field *field = impl_from_Field( iface );
 
-    TRACE( "%p, %d\n", field, size );
+    TRACE( "%p, %ld\n", field, size );
 
     field->defined_size = size;
     return S_OK;
diff --git a/dlls/msado15/tests/msado15.c b/dlls/msado15/tests/msado15.c
index 25c9c6f8356..cbe48764324 100644
--- a/dlls/msado15/tests/msado15.c
+++ b/dlls/msado15/tests/msado15.c
@@ -631,7 +631,7 @@ static void test_ADORecordsetConstruction(void)
     if (count > 0)
     {
         VARIANT index;
-        LONG size;
+        LONG_PTR size;
         DataTypeEnum type;
 
         V_VT( &index ) = VT_BSTR;
@@ -646,7 +646,7 @@ static void test_ADORecordsetConstruction(void)
         size = -1;
         hr = Field_get_DefinedSize( field, &size );
         ok( hr == S_OK, "got %08x\n", hr );
-        ok( size == 5, "got %d\n", size );
+        ok( size == 5, "got %ld\n", size );
 
         VariantClear(&index);
 
@@ -672,7 +672,8 @@ static void test_Fields(void)
     Field *field, *field2;
     VARIANT val, index;
     BSTR name;
-    LONG count, size;
+    LONG count;
+    LONG_PTR size;
     DataTypeEnum type;
     FieldAttributeEnum attrs;
     HRESULT hr;
@@ -747,7 +748,7 @@ static void test_Fields(void)
     size = -1;
     hr = Field_get_DefinedSize( field, &size );
     ok( hr == S_OK, "got %08x\n", hr );
-    ok( size == 4, "got %d\n", size );
+    ok( size == 4, "got %ld\n", size );
     attrs = 0xdead;
     hr = Field_get_Attributes( field, &attrs );
     ok( hr == S_OK, "got %08x\n", hr );
diff --git a/include/msado15_backcompat.idl b/include/msado15_backcompat.idl
index fedaf557066..08566a2eee0 100644
--- a/include/msado15_backcompat.idl
+++ b/include/msado15_backcompat.idl
@@ -634,7 +634,7 @@ interface Field20 : _ADO
 
     [id(0x0000044f), propget]
     HRESULT DefinedSize(
-        [out, retval] LONG *size);
+        [out, retval] LONG_PTR *size);
 
     [id(0x0000044c), propget]
     HRESULT Name(
@@ -699,7 +699,7 @@ interface Field20 : _ADO
 
     [id(0x0000044f), propput]
     HRESULT DefinedSize(
-        [in] LONG size);
+        [in] LONG_PTR size);
 
     [id(0x0000040c), propput]
     HRESULT Attributes(
-- 
2.34.1




More information about the wine-devel mailing list