[PATCH v6 3/8] jscript: Retrieve the proper script dispatch from the named item in GetScriptDispatch.
Gabriel Ivăncescu
gabrielopcode at gmail.com
Sat Mar 7 07:40:33 CST 2020
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
dlls/jscript/jscript.c | 10 +++++++++-
dlls/jscript/tests/jscript.c | 5 +++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c
index 6281b20..aabad7e 100644
--- a/dlls/jscript/jscript.c
+++ b/dlls/jscript/jscript.c
@@ -883,6 +883,7 @@ static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR
IDispatch **ppdisp)
{
JScript *This = impl_from_IActiveScript(iface);
+ jsdisp_t *script_obj;
TRACE("(%p)->(%s %p)\n", This, debugstr_w(pstrItemName), ppdisp);
@@ -894,7 +895,14 @@ static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR
return E_UNEXPECTED;
}
- *ppdisp = to_disp(This->ctx->global);
+ script_obj = This->ctx->global;
+ if(pstrItemName) {
+ named_item_t *item = lookup_named_item(This->ctx, pstrItemName, 0);
+ if(!item) return E_INVALIDARG;
+ if(item->script_obj) script_obj = item->script_obj;
+ }
+
+ *ppdisp = to_disp(script_obj);
IDispatch_AddRef(*ppdisp);
return S_OK;
}
diff --git a/dlls/jscript/tests/jscript.c b/dlls/jscript/tests/jscript.c
index 56b8cff..be1320f 100644
--- a/dlls/jscript/tests/jscript.c
+++ b/dlls/jscript/tests/jscript.c
@@ -1183,6 +1183,11 @@ static void test_named_items(void)
ok(visible_named_item_ref == 0, "visible_named_item_ref = %u\n", visible_named_item_ref);
ok(visible_code_named_item_ref == 0, "visible_code_named_item_ref = %u\n", visible_code_named_item_ref);
+ hr = IActiveScript_GetScriptDispatch(script, L"noContext", &disp);
+ ok(hr == E_INVALIDARG, "GetScriptDispatch returned: %08x\n", hr);
+ hr = IActiveScript_GetScriptDispatch(script, L"codeONLYItem", &disp);
+ ok(hr == E_INVALIDARG, "GetScriptDispatch returned: %08x\n", hr);
+
SET_EXPECT(GetItemInfo_global_code);
hr = IActiveScript_AddNamedItem(script, L"globalCodeItem", SCRIPTITEM_GLOBALMEMBERS | SCRIPTITEM_CODEONLY);
ok(hr == S_OK, "AddNamedItem failed: %08x\n", hr);
--
2.21.0
More information about the wine-devel
mailing list