Commit dbaa6427 authored by Alexandre Julliard's avatar Alexandre Julliard

Revert "oleaut32/tests: Get_test_recordinfo shouldn't point into a specific VARIANT.".

This reverts commit 27f417eb. It breaks the tests.
parent 02ce1008
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment