Module: wine Branch: master Commit: dbaa64271748e0a7f5ff9a5bad3f61d5e80f3851 URL: https://gitlab.winehq.org/wine/wine/-/commit/dbaa64271748e0a7f5ff9a5bad3f61d...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Sep 27 09:16:16 2022 +0200
Revert "oleaut32/tests: Get_test_recordinfo shouldn't point into a specific VARIANT.".
This reverts commit 27f417eb9382e07617d37029bdca3bbaadf9f10d. It breaks the tests.
---
dlls/oleaut32/tests/vartest.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/dlls/oleaut32/tests/vartest.c b/dlls/oleaut32/tests/vartest.c index 342133d6403..cdbb836b041 100644 --- a/dlls/oleaut32/tests/vartest.c +++ b/dlls/oleaut32/tests/vartest.c @@ -246,10 +246,10 @@ typedef struct IRecordInfoImpl { IRecordInfo IRecordInfo_iface; LONG ref; - void *validsrc; unsigned int recordclear; unsigned int getsize; unsigned int recordcopy; + struct __tagBRECORD *rec; } IRecordInfoImpl;
static inline IRecordInfoImpl *impl_from_IRecordInfo(IRecordInfo *iface) @@ -299,8 +299,7 @@ static HRESULT WINAPI RecordInfo_RecordClear(IRecordInfo *iface, void *data) { IRecordInfoImpl* This = impl_from_IRecordInfo(iface); This->recordclear++; - if(data == This->validsrc) - This->validsrc = NULL; /* not valid anymore, now that it's been cleared */ + This->rec->pvRecord = NULL; return S_OK; }
@@ -308,7 +307,7 @@ static HRESULT WINAPI RecordInfo_RecordCopy(IRecordInfo *iface, void *src, void { IRecordInfoImpl* This = impl_from_IRecordInfo(iface); This->recordcopy++; - ok(This->validsrc && (src == This->validsrc), "wrong src pointer %p\n", src); + ok(src == (void*)0xdeadbeef, "wrong src pointer %p\n", src); return S_OK; }
@@ -431,7 +430,6 @@ static IRecordInfoImpl *get_test_recordinfo(void) rec->recordclear = 0; rec->getsize = 0; rec->recordcopy = 0; - rec->validsrc = (void *)0xdeadbeef;
return rec; } @@ -769,6 +767,7 @@ static test_VariantClearImpl test_myVariantClearImpl = {{&test_VariantClear_vtbl
static void test_VariantClear(void) { + struct __tagBRECORD *rec; IRecordInfoImpl *recinfo; HRESULT hres; VARIANTARG v; @@ -893,12 +892,15 @@ static void test_VariantClear(void) /* RECORD */ recinfo = get_test_recordinfo(); V_VT(&v) = VT_RECORD; - V_RECORDINFO(&v) = &recinfo->IRecordInfo_iface; - V_RECORD(&v) = recinfo->validsrc; + rec = &V_UNION(&v, brecVal); + rec->pRecInfo = &recinfo->IRecordInfo_iface; + rec->pvRecord = (void*)0xdeadbeef; recinfo->recordclear = 0; recinfo->ref = 2; + recinfo->rec = rec; hres = VariantClear(&v); ok(hres == S_OK, "ret %08lx\n", hres); + ok(rec->pvRecord == NULL, "got %p\n", rec->pvRecord); ok(recinfo->recordclear == 1, "got %d\n", recinfo->recordclear); ok(recinfo->ref == 1, "got %ld\n", recinfo->ref); IRecordInfo_Release(&recinfo->IRecordInfo_iface); @@ -906,6 +908,7 @@ static void test_VariantClear(void)
static void test_VariantCopy(void) { + struct __tagBRECORD *rec; IRecordInfoImpl *recinfo; VARIANTARG vSrc, vDst; VARTYPE vt; @@ -1030,17 +1033,20 @@ static void test_VariantCopy(void) V_VT(&vDst) = VT_EMPTY;
V_VT(&vSrc) = VT_RECORD; - V_RECORDINFO(&vSrc) = &recinfo->IRecordInfo_iface; - V_RECORD(&vSrc) = recinfo->validsrc; + rec = &V_UNION(&vSrc, brecVal); + rec->pRecInfo = &recinfo->IRecordInfo_iface; + rec->pvRecord = (void*)0xdeadbeef;
recinfo->recordclear = 0; recinfo->recordcopy = 0; recinfo->getsize = 0; + recinfo->rec = rec; hres = VariantCopy(&vDst, &vSrc); ok(hres == S_OK, "ret %08lx\n", hres);
- ok(V_RECORD(&vDst) != recinfo->validsrc && V_RECORD(&vDst) != NULL, "got %p\n", V_RECORD(&vDst)); - ok(V_RECORDINFO(&vDst) == &recinfo->IRecordInfo_iface, "got %p\n", V_RECORDINFO(&vDst)); + rec = &V_UNION(&vDst, brecVal); + ok(rec->pvRecord != (void*)0xdeadbeef && rec->pvRecord != NULL, "got %p\n", rec->pvRecord); + ok(rec->pRecInfo == &recinfo->IRecordInfo_iface, "got %p\n", rec->pRecInfo); ok(recinfo->getsize == 1, "got %d\n", recinfo->recordclear); ok(recinfo->recordcopy == 1, "got %d\n", recinfo->recordclear);