From 595646066b16e0018527e351d535343701a6e77e Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 15 Dec 2011 15:43:20 +0100 Subject: [PATCH] jscript: Call expressions needling EXPR_NEWREF flag directly. --- dlls/jscript/engine.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 46bdffb62ad..c7ed6d7dcb0 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -1071,10 +1071,23 @@ HRESULT forin_statement_eval(script_ctx_t *ctx, statement_t *_stat, return_type_ TRACE("iter %s\n", debugstr_w(str)); - if(stat->variable) + if(stat->variable) { hres = identifier_eval(ctx, identifier, 0, NULL, &exprval); - else - hres = expr_eval(ctx, stat->expr, EXPR_NEWREF, &rt->ei, &exprval); + }else { + switch(stat->expr->type) { + case EXPR_ARRAY: + hres = array_expression_eval(ctx, stat->expr, EXPR_NEWREF, &rt->ei, &exprval); + break; + case EXPR_IDENT: + hres = identifier_expression_eval(ctx, stat->expr, EXPR_NEWREF, &rt->ei, &exprval); + break; + case EXPR_MEMBER: + hres = member_expression_eval(ctx, stat->expr, EXPR_NEWREF, &rt->ei, &exprval); + break; + default: + hres = expr_eval(ctx, stat->expr, 0, &rt->ei, &exprval); + } + } if(SUCCEEDED(hres)) { V_VT(&name) = VT_BSTR; V_BSTR(&name) = str;