From: "Gabriel Ivăncescu" Subject: [PATCH 08/13] msscript.ocx: Implement ScriptModule_Run. Message-Id: <274d5ed378c80907d8f9ae94c0b1f59f9142053e.1586442574.git.gabrielopcode@gmail.com> Date: Thu, 9 Apr 2020 17:34:35 +0300 In-Reply-To: <311c32ff785fcd554c8d64166530bcc63090f724.1586442574.git.gabrielopcode@gmail.com> References: <311c32ff785fcd554c8d64166530bcc63090f724.1586442574.git.gabrielopcode@gmail.com> Signed-off-by: Gabriel Ivăncescu --- dlls/msscript.ocx/msscript.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/msscript.ocx/msscript.c b/dlls/msscript.ocx/msscript.c index 3cbc7a4..d5fdca7 100644 --- a/dlls/msscript.ocx/msscript.c +++ b/dlls/msscript.ocx/msscript.c @@ -847,10 +847,19 @@ static HRESULT WINAPI ScriptModule_ExecuteStatement(IScriptModule *iface, BSTR s static HRESULT WINAPI ScriptModule_Run(IScriptModule *iface, BSTR procedure_name, SAFEARRAY **parameters, VARIANT *res) { ScriptModule *This = impl_from_IScriptModule(iface); + SAFEARRAY *sa; - FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(procedure_name), parameters, res); + TRACE("(%p)->(%s %p %p)\n", This, debugstr_w(procedure_name), parameters, res); - return E_NOTIMPL; + if (!parameters || !res) return E_POINTER; + if (!(sa = *parameters)) return E_POINTER; + + V_VT(res) = VT_EMPTY; + if (sa->cDims == 0) return DISP_E_BADINDEX; + if (!(sa->fFeatures & FADF_VARIANT)) return DISP_E_BADVARTYPE; + if (!This->control) return E_FAIL; + + return run_procedure(This, procedure_name, sa, res); } static const IScriptModuleVtbl ScriptModuleVtbl = { -- 2.21.0