[PATCH v6 6/8] jscript: Don't lookup global members for bytecodes with a named item.

Gabriel Ivăncescu gabrielopcode at gmail.com
Sat Mar 7 07:40:36 CST 2020


Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
 dlls/jscript/engine.c        | 4 +++-
 dlls/jscript/tests/jscript.c | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
index 3e32ea0..c8d33cb 100644
--- a/dlls/jscript/engine.c
+++ b/dlls/jscript/engine.c
@@ -3034,6 +3034,8 @@ HRESULT exec_source(script_ctx_t *ctx, DWORD flags, bytecode_t *bytecode, functi
     }
 
     if(flags & (EXEC_GLOBAL | EXEC_EVAL)) {
+        BOOL lookup_globals = (flags & EXEC_GLOBAL) && !bytecode->named_item;
+
         for(i=0; i < function->var_cnt; i++) {
             TRACE("[%d] %s %d\n", i, debugstr_w(function->variables[i].name), function->variables[i].func_id);
             if(function->variables[i].func_id != -1) {
@@ -3045,7 +3047,7 @@ HRESULT exec_source(script_ctx_t *ctx, DWORD flags, bytecode_t *bytecode, functi
 
                 hres = jsdisp_propput_name(variable_obj, function->variables[i].name, jsval_obj(func_obj));
                 jsdisp_release(func_obj);
-            }else if(!(flags & EXEC_GLOBAL) || !lookup_global_members(ctx, function->variables[i].name, NULL)) {
+            }else if(!lookup_globals || !lookup_global_members(ctx, function->variables[i].name, NULL)) {
                 DISPID id = 0;
 
                 hres = jsdisp_get_id(variable_obj, function->variables[i].name, fdexNameEnsure, &id);
diff --git a/dlls/jscript/tests/jscript.c b/dlls/jscript/tests/jscript.c
index 45d4620..57d1636 100644
--- a/dlls/jscript/tests/jscript.c
+++ b/dlls/jscript/tests/jscript.c
@@ -1306,7 +1306,7 @@ static void test_named_items(void)
     ok(hr == S_OK, "ParseScriptText failed: %08x\n", hr);
     CHECK_CALLED(OnEnterScript);
     CHECK_CALLED(OnLeaveScript);
-    todo_wine CHECK_NOT_CALLED(GetIDsOfNames);
+    CHECK_NOT_CALLED(GetIDsOfNames);
 
     SET_EXPECT(OnEnterScript);
     SET_EXPECT(OnLeaveScript);
-- 
2.21.0




More information about the wine-devel mailing list