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