Module: wine Branch: master Commit: 595646066b16e0018527e351d535343701a6e77e URL: http://source.winehq.org/git/wine.git/?a=commit;h=595646066b16e0018527e351d5...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Dec 15 15:43:20 2011 +0100
jscript: Call expressions needling EXPR_NEWREF flag directly.
---
dlls/jscript/engine.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 46bdffb..c7ed6d7 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;