mirror of
https://github.com/reactos/wine.git
synced 2024-11-25 04:39:45 +00:00
oleaut32: Implement the ability to marshall VT_CARRAY's of user defined types.
This commit is contained in:
parent
1e0b836712
commit
b8d7088e88
@ -1078,9 +1078,7 @@ static void test_typelibmarshal(void)
|
||||
mystruct = MYSTRUCT_BYPTR;
|
||||
memcpy(mystructArray, MYSTRUCT_ARRAY, sizeof(mystructArray));
|
||||
hr = IWidget_StructArgs(pWidget, MYSTRUCT_BYVAL, &mystruct, mystructArray);
|
||||
todo_wine {
|
||||
ok_ole_success(hr, IWidget_StructArgs);
|
||||
}
|
||||
|
||||
/* call Clone */
|
||||
dispparams.cNamedArgs = 0;
|
||||
|
@ -888,7 +888,7 @@ serialize_param(
|
||||
if (debugout) TRACE_(olerelay)("(vt %s)",debugstr_vt(adesc->tdescElem.vt));
|
||||
if (debugout) TRACE_(olerelay)("[");
|
||||
for (i=0;i<arrsize;i++) {
|
||||
hres = serialize_param(tinfo, writeit, debugout, dealloc, &adesc->tdescElem, (DWORD*)((LPBYTE)arg+i*_xsize(&adesc->tdescElem, tinfo)), buf);
|
||||
hres = serialize_param(tinfo, writeit, debugout, dealloc, &adesc->tdescElem, (DWORD*)((LPBYTE)(*arg)+i*_xsize(&adesc->tdescElem, tinfo)), buf);
|
||||
if (hres)
|
||||
return hres;
|
||||
if (debugout && (i<arrsize-1)) TRACE_(olerelay)(",");
|
||||
@ -1247,6 +1247,7 @@ deserialize_param(
|
||||
if (adesc->cDims > 1) FIXME("cDims > 1 in VT_CARRAY. Does it work?\n");
|
||||
for (i=0;i<adesc->cDims;i++)
|
||||
arrsize *= adesc->rgbounds[i].cElements;
|
||||
*arg=(DWORD)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,_xsize(tdesc->u.lptdesc, tinfo) * arrsize);
|
||||
for (i=0;i<arrsize;i++)
|
||||
deserialize_param(
|
||||
tinfo,
|
||||
@ -1254,7 +1255,7 @@ deserialize_param(
|
||||
debugout,
|
||||
alloc,
|
||||
&adesc->tdescElem,
|
||||
(DWORD*)((LPBYTE)(arg)+i*_xsize(&adesc->tdescElem, tinfo)),
|
||||
(DWORD*)((LPBYTE)(*arg)+i*_xsize(&adesc->tdescElem, tinfo)),
|
||||
buf
|
||||
);
|
||||
return S_OK;
|
||||
|
@ -2947,7 +2947,7 @@ static ITypeLib2* ITypeLib2_Constructor_MSFT(LPVOID pLib, DWORD dwTLBLength)
|
||||
if(td[1]<0)
|
||||
pTypeLibImpl->pTypeDesc[i].u.lpadesc->tdescElem.vt = td[0] & VT_TYPEMASK;
|
||||
else
|
||||
pTypeLibImpl->pTypeDesc[i].u.lpadesc->tdescElem = stndTypeDesc[td[0]/8];
|
||||
pTypeLibImpl->pTypeDesc[i].u.lpadesc->tdescElem = cx.pLibInfo->pTypeDesc[td[0]/(2*sizeof(INT))];
|
||||
|
||||
pTypeLibImpl->pTypeDesc[i].u.lpadesc->cDims = td[2];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user