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