Jacek Caban : jscript: Don' t initialize variables without initialiser to undefined in variable_list_eval .

Alexandre Julliard julliard at winehq.org
Mon Oct 6 09:34:58 CDT 2008


Module: wine
Branch: master
Commit: 47b842bff7f93ac65b60230b506e4cf683c18817
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=47b842bff7f93ac65b60230b506e4cf683c18817

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Oct  2 16:22:27 2008 +0200

jscript: Don't initialize variables without initialiser to undefined in variable_list_eval.

---

 dlls/jscript/engine.c      |   24 +++++++++++-------------
 dlls/jscript/tests/lang.js |    2 ++
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c
index 212ad10..d84e65b 100644
--- a/dlls/jscript/engine.c
+++ b/dlls/jscript/engine.c
@@ -517,25 +517,23 @@ HRESULT block_statement_eval(exec_ctx_t *ctx, statement_t *_stat, return_type_t
 static HRESULT variable_list_eval(exec_ctx_t *ctx, variable_declaration_t *var_list, jsexcept_t *ei)
 {
     variable_declaration_t *iter;
-    HRESULT hres = E_FAIL;
+    HRESULT hres = S_OK;
 
     for(iter = var_list; iter; iter = iter->next) {
+        exprval_t exprval;
         VARIANT val;
 
-        if(iter->expr) {
-            exprval_t exprval;
+        if(!iter->expr)
+            continue;
 
-            hres = expr_eval(ctx, iter->expr, 0, ei, &exprval);
-            if(FAILED(hres))
-                break;
+        hres = expr_eval(ctx, iter->expr, 0, ei, &exprval);
+        if(FAILED(hres))
+            break;
 
-            hres = exprval_to_value(ctx->parser->script, &exprval, ei, &val);
-            exprval_release(&exprval);
-            if(FAILED(hres))
-                break;
-        }else {
-            V_VT(&val) = VT_EMPTY;
-        }
+        hres = exprval_to_value(ctx->parser->script, &exprval, ei, &val);
+        exprval_release(&exprval);
+        if(FAILED(hres))
+            break;
 
         hres = jsdisp_propput_name(ctx->var_disp, iter->identifier, ctx->parser->script->lcid, &val, ei, NULL/*FIXME*/);
         VariantClear(&val);
diff --git a/dlls/jscript/tests/lang.js b/dlls/jscript/tests/lang.js
index f7ae2be..d9c3689 100644
--- a/dlls/jscript/tests/lang.js
+++ b/dlls/jscript/tests/lang.js
@@ -741,6 +741,8 @@ function varTestFunc(varTest3) {
     var varTest4;
 }
 
+varTestFunc(3);
+
 deleteTest = 1;
 delete deleteTest;
 try {




More information about the wine-cvs mailing list