Huw Davies : oleaut32: Implement GetVarDesc_Proxy and friends.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon May 8 08:02:21 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: c7bb8bd4fe651b9b360bce5ca65c34fc593bf6b5
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c7bb8bd4fe651b9b360bce5ca65c34fc593bf6b5
Author: Huw Davies <huw at codeweavers.com>
Date: Sun May 7 22:00:51 2006 +0100
oleaut32: Implement GetVarDesc_Proxy and friends.
---
dlls/oleaut32/usrmarshal.c | 39 ++++++++++++++++++++++++++++++++-------
1 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/dlls/oleaut32/usrmarshal.c b/dlls/oleaut32/usrmarshal.c
index fd24b4a..562983a 100644
--- a/dlls/oleaut32/usrmarshal.c
+++ b/dlls/oleaut32/usrmarshal.c
@@ -1448,8 +1448,14 @@ HRESULT CALLBACK ITypeInfo_GetVarDesc_Pr
UINT index,
VARDESC** ppVarDesc)
{
- FIXME("not implemented\n");
- return E_FAIL;
+ CLEANLOCALSTORAGE stg;
+ TRACE("(%p, %d, %p)\n", This, index, ppVarDesc);
+
+ stg.flags = 0;
+ stg.pStorage = NULL;
+ stg.pInterface = NULL;
+
+ return ITypeInfo_RemoteGetVarDesc_Proxy(This, index, ppVarDesc, &stg);
}
HRESULT __RPC_STUB ITypeInfo_GetVarDesc_Stub(
@@ -1458,8 +1464,18 @@ HRESULT __RPC_STUB ITypeInfo_GetVarDesc_
LPVARDESC* ppVarDesc,
CLEANLOCALSTORAGE* pDummy)
{
- FIXME("not implemented\n");
- return E_FAIL;
+ HRESULT hr;
+ TRACE("(%p, %d, %p)\n", This, index, ppVarDesc);
+
+ hr = ITypeInfo_GetVarDesc(This, index, ppVarDesc);
+ if(hr != S_OK)
+ return hr;
+
+ pDummy->flags = CLS_VARDESC;
+ ITypeInfo_AddRef(This);
+ pDummy->pInterface = (IUnknown*)This;
+ pDummy->pStorage = ppVarDesc;
+ return hr;
}
HRESULT CALLBACK ITypeInfo_GetNames_Proxy(
@@ -1709,14 +1725,23 @@ void CALLBACK ITypeInfo_ReleaseVarDesc_P
ITypeInfo* This,
VARDESC* pVarDesc)
{
- FIXME("not implemented\n");
+ TRACE("(%p, %p)\n", This, pVarDesc);
+
+ if(pVarDesc->lpstrSchema)
+ CoTaskMemFree(pVarDesc->lpstrSchema);
+
+ if(pVarDesc->varkind == VAR_CONST)
+ CoTaskMemFree(pVarDesc->u.lpvarValue);
+
+ free_embedded_elemdesc(&pVarDesc->elemdescVar);
+ CoTaskMemFree(pVarDesc);
}
HRESULT __RPC_STUB ITypeInfo_ReleaseVarDesc_Stub(
ITypeInfo* This)
{
- FIXME("not implemented\n");
- return E_FAIL;
+ TRACE("nothing to do\n");
+ return S_OK;
}
More information about the wine-cvs
mailing list