Jacek Caban : mshtml: Added support for DISPATCH_METHOD|DISPATCH_PROPERTYGET calls to InvokeEx implementation .

Alexandre Julliard julliard at winehq.org
Wed Oct 14 09:01:58 CDT 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Oct 13 20:50:28 2009 +0200

mshtml: Added support for DISPATCH_METHOD|DISPATCH_PROPERTYGET calls to InvokeEx implementation.

---

 dlls/mshtml/dispex.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c
index 4079242..fc8bd55 100644
--- a/dlls/mshtml/dispex.c
+++ b/dlls/mshtml/dispex.c
@@ -221,7 +221,7 @@ static void add_func_info(dispex_data_t *data, DWORD *size, tid_t tid, const FUN
 
     data->funcs[data->func_cnt].id = desc->memid;
     data->funcs[data->func_cnt].tid = tid;
-    data->funcs[data->func_cnt].func_disp_idx = desc->invkind == DISPATCH_METHOD ? data->func_disp_cnt++ : -1;
+    data->funcs[data->func_cnt].func_disp_idx = (desc->invkind & DISPATCH_METHOD) ? data->func_disp_cnt++ : -1;
 
     data->func_cnt++;
 }
@@ -515,6 +515,9 @@ static HRESULT function_value(IUnknown *iface, LCID lcid, WORD flags, DISPPARAMS
     HRESULT hres;
 
     switch(flags) {
+    case DISPATCH_METHOD|DISPATCH_PROPERTYGET:
+        if(!res)
+            return E_INVALIDARG;
     case DISPATCH_METHOD:
         hres = typeinfo_invoke(This->obj, This->info, flags, params, res, ei);
         break;
@@ -571,8 +574,10 @@ static HRESULT function_invoke(DispatchEx *This, func_info_t *func, WORD flags,
     HRESULT hres;
 
     switch(flags) {
-    case DISPATCH_METHOD:
     case DISPATCH_METHOD|DISPATCH_PROPERTYGET:
+        if(!res)
+            return E_INVALIDARG;
+    case DISPATCH_METHOD:
         hres = typeinfo_invoke(This, func, flags, dp, res, ei);
         break;
     case DISPATCH_PROPERTYGET: {
@@ -810,6 +815,9 @@ static HRESULT WINAPI DispatchEx_InvokeEx(IDispatchEx *iface, DISPID id, LCID lc
         var = &This->dynamic_data->props[idx].var;
 
         switch(wFlags) {
+        case DISPATCH_METHOD|DISPATCH_PROPERTYGET:
+            if(!pvarRes)
+                return E_INVALIDARG;
         case DISPATCH_METHOD: {
             DISPID named_arg = DISPID_THIS;
             DISPPARAMS dp = {NULL, &named_arg, 0, 1};




More information about the wine-cvs mailing list