André Hentschel : oledb32: Fix dst_len in DataConvert.

Alexandre Julliard julliard at winehq.org
Wed May 26 11:49:06 CDT 2010


Module: wine
Branch: master
Commit: 0ed2288552f4fa63506a45c783d29c18b1dba2b3
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=0ed2288552f4fa63506a45c783d29c18b1dba2b3

Author: André Hentschel <nerv at dawncrow.de>
Date:   Tue May 25 19:40:36 2010 +0200

oledb32: Fix dst_len in DataConvert.

---

 dlls/oledb32/convert.c       |    5 ++++-
 dlls/oledb32/tests/convert.c |   19 ++-----------------
 2 files changed, 6 insertions(+), 18 deletions(-)

diff --git a/dlls/oledb32/convert.c b/dlls/oledb32/convert.c
index 6338090..01c304c 100644
--- a/dlls/oledb32/convert.c
+++ b/dlls/oledb32/convert.c
@@ -161,7 +161,6 @@ static HRESULT WINAPI convert_DataConvert(IDataConvert* iface,
           src_type, dst_type, src_len, dst_len, src, dst, dst_max_len,
           src_status, dst_status, precision, scale, flags);
 
-    *dst_len = get_length(dst_type);
     *dst_status = DBSTATUS_E_BADACCESSOR;
 
     if(IDataConvert_CanConvert(iface, src_type, dst_type) != S_OK)
@@ -571,10 +570,14 @@ static HRESULT WINAPI convert_DataConvert(IDataConvert* iface,
     if(hr == DISP_E_OVERFLOW)
     {
         *dst_status = DBSTATUS_E_DATAOVERFLOW;
+        *dst_len = get_length(dst_type);
         hr = DB_E_ERRORSOCCURRED;
     }
     else if(hr == S_OK)
+    {
         *dst_status = DBSTATUS_S_OK;
+        *dst_len = get_length(dst_type);
+    }
 
     return hr;
 }
diff --git a/dlls/oledb32/tests/convert.c b/dlls/oledb32/tests/convert.c
index c6a749d..2eb3951 100644
--- a/dlls/oledb32/tests/convert.c
+++ b/dlls/oledb32/tests/convert.c
@@ -370,7 +370,6 @@ static void test_converttoi2(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst == 0x1234, "got %08x\n", dst);
 
@@ -454,7 +453,6 @@ todo_wine
     hr = IDataConvert_DataConvert(convert, DBTYPE_ERROR, DBTYPE_I2, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst == 0x1234, "got %08x\n", dst);
 
@@ -482,10 +480,9 @@ todo_wine
 {
     ok(hr == S_OK, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-}
     ok(dst_len == sizeof(dst), "got %d\n", dst_len);
-todo_wine
     ok(dst == 0x4321, "got %08x\n", dst);
+}
 
     dst_len = dst = 0x1234;
     memset(src, 0, sizeof(DECIMAL));
@@ -650,7 +647,6 @@ static void test_converttoi4(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_I4, 0, &dst_len, src, &i4, sizeof(i4), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(i4 == 0x12345678, "got %08x\n", i4);
 
@@ -733,7 +729,6 @@ todo_wine
     hr = IDataConvert_DataConvert(convert, DBTYPE_ERROR, DBTYPE_I4, 0, &dst_len, src, &i4, sizeof(i4), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(i4 == 0x12345678, "got %08x\n", i4);
 
@@ -764,10 +759,9 @@ todo_wine
 {
     ok(hr == S_OK, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_S_OK, "got %08x\n", dst_status);
-}
     ok(dst_len == sizeof(i4), "got %d\n", dst_len);
-todo_wine
     ok(i4 == 0x1234, "got %08x\n", i4);
+}
 
     i4 = 0x12345678;
     memset(src, 0, sizeof(DECIMAL));
@@ -984,7 +978,6 @@ static void test_converttowstr(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_WSTR, 0, &dst_len, src, dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst[0] == 0xcccc, "got %02x\n", dst[0]);
 
@@ -1466,7 +1459,6 @@ static void test_converttostr(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_STR, 0, &dst_len, src, dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst[0] == (char)0xcc, "got %02x\n", dst[0]);
 
@@ -1964,7 +1956,6 @@ static void test_converttobyrefwstr(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_BYREF | DBTYPE_WSTR, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst == (void*)0x12345678, "got %p\n", dst);
 
@@ -2057,7 +2048,6 @@ static void test_converttoguid(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_GUID, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(IsEqualGUID(&dst, &IID_IDCInfo), "dst has changed\n");
 
@@ -2137,7 +2127,6 @@ static void test_converttoui1(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_UI1, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst == 0x12, "got %08x\n", dst);
 
@@ -2191,7 +2180,6 @@ static void test_converttoui4(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_UI4, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst == 0x12345678, "got %08x\n", dst);
 
@@ -2256,7 +2244,6 @@ static void test_converttor4(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_R4, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst == 1.0, "got %f\n", dst);
 
@@ -2310,7 +2297,6 @@ static void test_converttocy(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_CY, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst.int64 == 0xcc, "dst changed\n");
 
@@ -2364,7 +2350,6 @@ static void test_converttoui8(void)
     hr = IDataConvert_DataConvert(convert, DBTYPE_NULL, DBTYPE_UI8, 0, &dst_len, src, &dst, sizeof(dst), 0, &dst_status, 0, 0, 0);
     ok(hr == DB_E_UNSUPPORTEDCONVERSION, "got %08x\n", hr);
     ok(dst_status == DBSTATUS_E_BADACCESSOR, "got %08x\n", dst_status);
-todo_wine
     ok(dst_len == 0x1234, "got %d\n", dst_len);
     ok(dst.QuadPart == 0xcc, "dst changed\n");
 




More information about the wine-cvs mailing list