Gabriel Ivăncescu (@insn) commented about dlls/mshtml/mutation.c:
+};
+HRESULT mutation_observer_ctor_value(DispatchEx *dispex, LCID lcid,
WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei,
IServiceProvider *caller)
+{
- struct mutation_observer_ctor *This = mutation_observer_ctor_from_DispatchEx(dispex);
- VARIANT *callback;
- IWineMSHTMLMutationObserver *mutation_observer;
- HRESULT hres;
- int argc = params->cArgs - params->cNamedArgs;
- TRACE("(%p)->(%lx %x %p %p %p %p)\n", This, lcid, flags, params, res, ei, caller);
- if (argc < 1)
return E_UNEXPECTED;
Sorry, I missed this earlier. You need to check `flags` before argc (also please remove `cNamedArgs` and just check `params->cArgs` directly instead of using argc variable, as I said, we don't handle named args anyway).
Something like this should work:
```c switch (flags) { case DISPATCH_METHOD | DISPATCH_PROPERTYGET: if (!res) return E_INVALIDARG; /* fall through */ case DISPATCH_METHOD: case DISPATCH_CONSTRUCT: break; default: FIXME("flags %x not supported\n", flags); return E_NOTIMPL; } ```