Jacek Caban : jscript: Call expressions needling EXPR_NEWREF flag directly.
Alexandre Julliard
julliard at winehq.org
Thu Dec 15 12:47:22 CST 2011
Module: wine
Branch: master
Commit: 595646066b16e0018527e351d535343701a6e77e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=595646066b16e0018527e351d535343701a6e77e
Author: Jacek Caban <jacek at 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;
More information about the wine-cvs
mailing list