tests: SafeArrayDestroyData & FADF_STATIC
Walt Ogburn
reuben at ugcs.caltech.edu
Tue Oct 19 01:41:28 CDT 2004
Sorry, the patch had a few line breaks the first time. They are corrected
here.
Changelog:
Test that SafeArrayDestroyData keeps the pointer if FADF_STATIC is set,
nulls it otherwise.
- Walter
Index: dlls/oleaut32/tests/safearray.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/tests/safearray.c,v
retrieving revision 1.17
diff -u -r1.17 safearray.c
--- dlls/oleaut32/tests/safearray.c 20 Sep 2004 19:11:48 -0000 1.17
+++ dlls/oleaut32/tests/safearray.c 18 Oct 2004 23:46:02 -0000
@@ -1536,6 +1536,42 @@
}
+static void test_SafeArrayDestroyData (void)
+{
+ SAFEARRAYBOUND sab;
+ SAFEARRAY *sa;
+ HRESULT hres;
+ int value = 0;
+ long index[1];
+ void HUGEP *temp_pvData;
+
+ sab.lLbound = 0;
+ sab.cElements = 10;
+ sa = SafeArrayCreate(VT_INT, 1, &sab);
+ ok(sa != NULL, "Create() failed.\n");
+ if (!sa)
+ return;
+ index[0] = 1;
+ SafeArrayPutElement (sa, index, &value);
+
+/* SafeArrayDestroyData shouldn't do anything if FADF_STATIC is set. */
+ sa->fFeatures |= FADF_STATIC;
+ temp_pvData = sa->pvData;
+ hres = SafeArrayDestroyData(sa);
+ ok(hres == S_OK, "SADData FADF_STATIC failed, error code %lx.\n",hres);
+ ok(sa->pvData == temp_pvData, "SADData FADF_STATIC: pvData=%p, expected %p (fFeatures = %d).\n",
+ sa->pvData, temp_pvData, sa->fFeatures);
+
+/* Clear FADF_STATIC, now really destroy the data. */
+ sa->fFeatures ^= FADF_STATIC;
+ hres = SafeArrayDestroyData(sa);
+ ok(hres == S_OK, "SADData !FADF_STATIC failed, error code %lx.\n",hres);
+ ok(sa->pvData == NULL, "SADData !FADF_STATIC: pvData=%p, expected NULL.\n", sa->pvData);
+
+ hres = SafeArrayDestroy(sa);
+ ok(hres == S_OK, "SAD failed, error code %lx.\n", hres);
+}
+
START_TEST(safearray)
{
hOleaut32 = LoadLibraryA("oleaut32.dll");
@@ -1558,6 +1594,7 @@
test_SafeArrayClear();
test_SafeArrayCreateEx();
test_SafeArrayCopyData();
+ test_SafeArrayDestroyData();
test_SafeArrayGetPutElement();
test_SafeArrayGetPutElement_BSTR();
test_SafeArrayGetPutElement_IUnknown();
More information about the wine-patches
mailing list