2
0
Эх сурвалжийг харах

bug in dynamic assignop (close #7335)

Nicolas Cannasse 7 жил өмнө
parent
commit
89a17e35a1

+ 3 - 2
src/generators/genhl.ml

@@ -2916,14 +2916,15 @@ and gen_assign_op ctx acc e1 f =
 		r
 	| ADynamic (eobj, fid) ->
 		let robj = eval_null_check ctx eobj in
+		hold ctx robj;
 		let t = real_type ctx e1 in
 		let r = alloc_tmp ctx t in
 		op ctx (ODynGet (r,robj,fid));
-		hold ctx robj;
 		let r = cast_to ctx r (to_type ctx e1.etype) e1.epos in
 		let r = f r in
+		let r = cast_to ctx r t e1.epos in
 		free ctx robj;
-		op ctx (ODynSet (robj,fid,cast_to ctx r t e1.epos));
+		op ctx (ODynSet (robj,fid,r));
 		r
 	| ANone | ALocal _ | AStaticFun _ | AInstanceFun _ | AInstanceProto _ | AVirtualMethod _ | AEnum _ ->
 		assert false