]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Fix boxing of value type different than the target type
authorLuca Bruno <lucabru@src.gnome.org>
Tue, 5 Jul 2011 18:22:19 +0000 (20:22 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Tue, 5 Jul 2011 18:22:19 +0000 (20:22 +0200)
codegen/valaccodebasemodule.vala

index 1fd8eeb2c6cdcd4eff00696c5850275c0e83904d..c2591fa057f1f1ffefe6644e68727a1fa856f305 100644 (file)
@@ -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) {