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