Jacek Caban : mshtml: Added support for calling functions returned by builtin getters.
Alexandre Julliard
julliard at winehq.org
Fri Jul 13 14:11:19 CDT 2012
Module: wine
Branch: master
Commit: 61ded412a2ced9ee7af7b50ad393ad2c23170e58
URL: http://source.winehq.org/git/wine.git/?a=commit;h=61ded412a2ced9ee7af7b50ad393ad2c23170e58
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Jul 13 14:46:41 2012 +0200
mshtml: Added support for calling functions returned by builtin getters.
---
dlls/mshtml/dispex.c | 22 ++++++++++++++++++++--
1 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/dispex.c b/dlls/mshtml/dispex.c
index 39dfa64..bbe6098 100644
--- a/dlls/mshtml/dispex.c
+++ b/dlls/mshtml/dispex.c
@@ -849,7 +849,7 @@ static HRESULT builtin_propget(DispatchEx *This, func_info_t *func, DISPPARAMS *
IUnknown *iface;
HRESULT hres;
- if(dp->cArgs) {
+ if(dp && dp->cArgs) {
FIXME("cArgs %d\n", dp->cArgs);
return E_NOTIMPL;
}
@@ -961,7 +961,25 @@ static HRESULT invoke_builtin_prop(DispatchEx *This, DISPID id, LCID lcid, WORD
hres = builtin_propget(This, func, dp, res);
break;
default:
- hres = typeinfo_invoke(This, func, flags, dp, res, ei);
+ if(!func->get_vtbl_off) {
+ hres = typeinfo_invoke(This, func, flags, dp, res, ei);
+ }else {
+ VARIANT v;
+
+ hres = builtin_propget(This, func, NULL, &v);
+ if(FAILED(hres))
+ return hres;
+
+ if(V_VT(&v) != VT_DISPATCH) {
+ FIXME("Not a function %s\n", debugstr_variant(&v));
+ VariantClear(&v);
+ return E_FAIL;
+ }
+
+ hres = invoke_disp_value(This, V_DISPATCH(&v), lcid, flags, dp, res, ei, caller);
+
+ IDispatch_Release(V_DISPATCH(&v));
+ }
}
return hres;
More information about the wine-cvs
mailing list