Huw Davies : oleaut32: Don' t invoke a function that has the restricted attribute or is part of an interface that 's marked as restricted.

Alexandre Julliard julliard at winehq.org
Thu Jul 29 12:08:43 CDT 2010


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

Author: Huw Davies <huw at codeweavers.com>
Date:   Thu Jul 29 13:20:21 2010 +0100

oleaut32: Don't invoke a function that has the restricted attribute or is part of an interface that's marked as restricted.

---

 dlls/oleaut32/typelib.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 7fac039..81d0ae0 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -6017,13 +6017,13 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
     unsigned int var_index;
     TYPEKIND type_kind;
     HRESULT hres;
-    const TLBFuncDesc *pFuncInfo = This->funclist;
+    const TLBFuncDesc *pFuncInfo;
 
     TRACE("(%p)(%p,id=%d,flags=0x%08x,%p,%p,%p,%p)\n",
       This,pIUnk,memid,wFlags,pDispParams,pVarResult,pExcepInfo,pArgErr
     );
 
-    if( pFuncInfo->funcdesc.wFuncFlags == FUNCFLAG_FRESTRICTED )
+    if( This->TypeAttr.wTypeFlags & TYPEFLAG_FRESTRICTED )
         return DISP_E_MEMBERNOTFOUND;
 
     if (!pDispParams)
@@ -6045,7 +6045,8 @@ static HRESULT WINAPI ITypeInfo_fnInvoke(
      * FUNCDESC for dispinterfaces and we want the real function description */
     for (pFuncInfo = This->funclist; pFuncInfo; pFuncInfo=pFuncInfo->next)
         if ((memid == pFuncInfo->funcdesc.memid) &&
-            (wFlags & pFuncInfo->funcdesc.invkind))
+            (wFlags & pFuncInfo->funcdesc.invkind) &&
+            (pFuncInfo->funcdesc.wFuncFlags & FUNCFLAG_FRESTRICTED) == 0)
             break;
 
     if (pFuncInfo) {




More information about the wine-cvs mailing list