Andrey Turkin : oleaut32: Set flag for retval params in ICreateTypeInfo:: AddFuncDesc.

Alexandre Julliard julliard at winehq.org
Mon May 17 09:39:31 CDT 2010


Module: wine
Branch: master
Commit: 16468517bb9fed3569365449320617d6bb70af51
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=16468517bb9fed3569365449320617d6bb70af51

Author: Andrey Turkin <andrey.turkin at gmail.com>
Date:   Mon May 17 02:28:11 2010 +0400

oleaut32: Set flag for retval params in ICreateTypeInfo::AddFuncDesc.

---

 dlls/oleaut32/typelib2.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/oleaut32/typelib2.c b/dlls/oleaut32/typelib2.c
index df36268..b5ebea3 100644
--- a/dlls/oleaut32/typelib2.c
+++ b/dlls/oleaut32/typelib2.c
@@ -1766,7 +1766,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddFuncDesc(
 
     CyclicList *iter, *insert;
     int *typedata;
-    int i, num_defaults = 0;
+    int i, num_defaults = 0, num_retval = 0;
     int decoded_size;
     HRESULT hres;
 
@@ -1806,9 +1806,12 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddFuncDesc(
         return TYPE_E_INCONSISTENTPROPFUNCS;
 
     /* get number of arguments with default values specified */
-    for (i = 0; i < pFuncDesc->cParams; i++)
+    for (i = 0; i < pFuncDesc->cParams; i++) {
         if(pFuncDesc->lprgelemdescParam[i].u.paramdesc.wParamFlags & PARAMFLAG_FHASDEFAULT)
             num_defaults++;
+        if(pFuncDesc->lprgelemdescParam[i].u.paramdesc.wParamFlags & PARAMFLAG_FRETVAL)
+            num_retval++;
+    }
 
     if (!This->typedata) {
         This->typedata = HeapAlloc(GetProcessHeap(), 0, sizeof(CyclicList));
@@ -1840,6 +1843,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddFuncDesc(
     typedata[3] = ((sizeof(FUNCDESC) + decoded_size) << 16) | (unsigned short)(pFuncDesc->oVft?pFuncDesc->oVft+1:0);
     typedata[4] = (pFuncDesc->callconv << 8) | (pFuncDesc->invkind << 3) | pFuncDesc->funckind;
     if(num_defaults) typedata[4] |= 0x1000;
+    if (num_retval) typedata[4] |= 0x4000;
     typedata[5] = pFuncDesc->cParams;
 
     /* NOTE: High word of typedata[3] is total size of FUNCDESC + size of all ELEMDESCs for params + TYPEDESCs for pointer params and return types. */




More information about the wine-cvs mailing list