Jacek Caban : jscript: Pass string as jsstr_t to push_instr_str.

Alexandre Julliard julliard at winehq.org
Mon Mar 4 15:08:25 CST 2019


Module: wine
Branch: master
Commit: 1314140a3783d062ba4ce968c877fd09f75a3be3
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1314140a3783d062ba4ce968c877fd09f75a3be3

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Mar  1 17:44:40 2019 +0100

jscript: Pass string as jsstr_t to push_instr_str.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/jscript/compile.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/dlls/jscript/compile.c b/dlls/jscript/compile.c
index d165dd7..08975e2 100644
--- a/dlls/jscript/compile.c
+++ b/dlls/jscript/compile.c
@@ -245,14 +245,9 @@ static HRESULT push_instr_int(compiler_ctx_t *ctx, jsop_t op, LONG arg)
     return S_OK;
 }
 
-static HRESULT push_instr_str(compiler_ctx_t *ctx, jsop_t op, const WCHAR *arg)
+static HRESULT push_instr_str(compiler_ctx_t *ctx, jsop_t op, jsstr_t *str)
 {
     unsigned instr;
-    jsstr_t *str;
-
-    str = compiler_alloc_string(ctx, arg);
-    if(!str)
-        return E_OUTOFMEMORY;
 
     instr = push_instr(ctx, op);
     if(!instr)
@@ -490,13 +485,18 @@ static HRESULT compile_memberid_expression(compiler_ctx_t *ctx, expression_t *ex
     }
     case EXPR_MEMBER: {
         member_expression_t *member_expr = (member_expression_t*)expr;
+        jsstr_t *jsstr;
 
         hres = compile_expression(ctx, member_expr->expression, TRUE);
         if(FAILED(hres))
             return hres;
 
         /* FIXME: Potential optimization */
-        hres = push_instr_str(ctx, OP_str, member_expr->identifier);
+        jsstr = compiler_alloc_string(ctx, member_expr->identifier);
+        if(!jsstr)
+            return E_OUTOFMEMORY;
+
+        hres = push_instr_str(ctx, OP_str, jsstr);
         if(FAILED(hres))
             return hres;
 
@@ -689,13 +689,18 @@ static HRESULT compile_delete_expression(compiler_ctx_t *ctx, unary_expression_t
     }
     case EXPR_MEMBER: {
         member_expression_t *member_expr = (member_expression_t*)expr->expression;
+        jsstr_t *jsstr;
 
         hres = compile_expression(ctx, member_expr->expression, TRUE);
         if(FAILED(hres))
             return hres;
 
         /* FIXME: Potential optimization */
-        hres = push_instr_str(ctx, OP_str, member_expr->identifier);
+        jsstr = compiler_alloc_string(ctx, member_expr->identifier);
+        if(!jsstr)
+            return E_OUTOFMEMORY;
+
+        hres = push_instr_str(ctx, OP_str, jsstr);
         if(FAILED(hres))
             return hres;
 
@@ -824,7 +829,7 @@ static HRESULT compile_literal(compiler_ctx_t *ctx, literal_t *literal)
     case LT_NULL:
         return push_instr(ctx, OP_null) ? S_OK : E_OUTOFMEMORY;
     case LT_STRING:
-        return push_instr_str(ctx, OP_str, literal->u.wstr);
+        return push_instr_str(ctx, OP_str, compiler_alloc_string(ctx, literal->u.wstr));
     case LT_REGEXP:
         return push_instr_str_uint(ctx, OP_regexp, literal->u.regexp.str, literal->u.regexp.flags);
     DEFAULT_UNREACHABLE;




More information about the wine-cvs mailing list