From 5f9e3ffdb926bb58e088fe353d0ecd25f23b6434 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Thu, 12 Dec 2002 02:15:46 +0000 Subject: [PATCH] Serialize/deserialize all reftypes in VT_USERDEFINED. --- dlls/oleaut32/tmarshal.c | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c index 15c3149e6cb..c0a671b784c 100644 --- a/dlls/oleaut32/tmarshal.c +++ b/dlls/oleaut32/tmarshal.c @@ -556,11 +556,25 @@ serialize_param( if (debugout) MESSAGE("}"); break; } - default: - FIXME("Don't know how to marshal type kind %d\n",tattr->typekind); - hres = E_FAIL; + default: { + TYPEDESC tdesc2; + + if (debugout) MESSAGE("U{"); + memset(&tdesc2,0,sizeof(tdesc2)); + tdesc2.vt = tattr->typekind; + hres = serialize_param( + tinfo2, + writeit, + debugout, + dealloc, + &tdesc2, + arg, + buf + ); + if (debugout) MESSAGE("}"); break; } + } ITypeInfo_Release(tinfo2); return hres; } @@ -896,11 +910,25 @@ deserialize_param( if (debugout) MESSAGE("}"); break; } - default: - FIXME("Don't know how to marshal type kind %d\n",tattr->typekind); - hres = E_FAIL; + default: { + TYPEDESC tdesc2; + + if (debugout) MESSAGE("U{"); + memset(&tdesc2,0,sizeof(tdesc2)); + tdesc2.vt = tattr->typekind; + hres = deserialize_param( + tinfo2, + readit, + debugout, + alloc, + &tdesc2, + (DWORD*)*arg, + buf + ); + if (debugout) MESSAGE("}"); break; } + } } if (hres) FIXME("failed to stuballoc in TKIND_RECORD.\n");