Gabriel Ivăncescu : vbscript: Retrieve the item's dispatch in a helper function.
Alexandre Julliard
julliard at winehq.org
Fri Mar 20 17:08:20 CDT 2020
Module: wine
Branch: master
Commit: 4287b1f3012ff8659f48e0204a4608cf675ae8c8
URL: https://source.winehq.org/git/wine.git/?a=commit;h=4287b1f3012ff8659f48e0204a4608cf675ae8c8
Author: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Date: Thu Mar 19 19:20:15 2020 +0200
vbscript: Retrieve the item's dispatch in a helper function.
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/vbscript/vbscript.c | 39 ++++++++++++++++++++++++---------------
1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index 86902d84ea..52bc4ffd0d 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -198,6 +198,27 @@ static void exec_queued_code(script_ctx_t *ctx)
}
}
+static HRESULT retrieve_named_item_disp(IActiveScriptSite *site, named_item_t *item)
+{
+ IUnknown *unk;
+ HRESULT hres;
+
+ hres = IActiveScriptSite_GetItemInfo(site, item->name, SCRIPTINFO_IUNKNOWN, &unk, NULL);
+ if(FAILED(hres)) {
+ WARN("GetItemInfo failed: %08x\n", hres);
+ return hres;
+ }
+
+ hres = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&item->disp);
+ IUnknown_Release(unk);
+ if(FAILED(hres)) {
+ WARN("object does not implement IDispatch\n");
+ return hres;
+ }
+
+ return S_OK;
+}
+
named_item_t *lookup_named_item(script_ctx_t *ctx, const WCHAR *name, unsigned flags)
{
named_item_t *item;
@@ -209,22 +230,10 @@ named_item_t *lookup_named_item(script_ctx_t *ctx, const WCHAR *name, unsigned f
hres = create_script_disp(ctx, &item->script_obj);
if(FAILED(hres)) return NULL;
}
+
if(!item->disp && (flags || !(item->flags & SCRIPTITEM_CODEONLY))) {
- IUnknown *unk;
-
- hres = IActiveScriptSite_GetItemInfo(ctx->site, item->name,
- SCRIPTINFO_IUNKNOWN, &unk, NULL);
- if(FAILED(hres)) {
- WARN("GetItemInfo failed: %08x\n", hres);
- continue;
- }
-
- hres = IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&item->disp);
- IUnknown_Release(unk);
- if(FAILED(hres)) {
- WARN("object does not implement IDispatch\n");
- continue;
- }
+ hres = retrieve_named_item_disp(ctx->site, item);
+ if(FAILED(hres)) continue;
}
return item;
More information about the wine-cvs
mailing list