From: Luca Bruno Date: Tue, 5 Jul 2011 18:22:19 +0000 (+0200) Subject: codegen: Fix boxing of value type different than the target type X-Git-Tag: 0.13.1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69d4f7e83e8d3090bce503f0da4287b36a52b6fa;p=thirdparty%2Fvala.git codegen: Fix boxing of value type different than the target type --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 1fd8eeb2c..c2591fa05 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -5222,10 +5222,12 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } else if (result.cvalue is CCodeIdentifier || result.cvalue is CCodeMemberAccess) { result.cvalue = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, result.cvalue); } else { - var decl = get_temp_variable (type, type.value_owned, type, false); + var cast_type = target_type.copy (); + cast_type.nullable = false; + var decl = get_temp_variable (cast_type, cast_type.value_owned, node, false); emit_temp_var (decl); - ccode.add_assignment (get_variable_cexpression (decl.name), result.cvalue); + ccode.add_assignment (get_variable_cexpression (decl.name), get_implicit_cast_expression (result.cvalue, type, cast_type, node)); result.cvalue = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression (decl.name)); } } else if (unboxing) {