if (context.profile == Profile.GOBJECT && (iface != null || (cl != null && !cl.is_compact))) {
// checked cast for strict subtypes of GTypeInstance
if (expr.is_silent_cast) {
- var ccomma = new CCodeCommaExpression ();
- var temp_decl = get_temp_variable (expr.inner.value_type, true, expr, false);
-
+ var temp_decl = get_temp_variable (expr.inner.value_type, expr.inner.value_type.value_owned, expr, false);
emit_temp_var (temp_decl);
-
var ctemp = get_variable_cexpression (temp_decl.name);
- var cinit = new CCodeAssignment (ctemp, get_cvalue (expr.inner));
+
+ ccode.add_assignment (ctemp, get_cvalue (expr.inner));
var ccheck = create_type_check (ctemp, expr.type_reference);
var ccast = new CCodeCastExpression (ctemp, expr.type_reference.get_cname ());
var cnull = new CCodeConstant ("NULL");
-
- ccomma.append_expression (cinit);
- ccomma.append_expression (new CCodeConditionalExpression (ccheck, ccast, cnull));
- set_cvalue (expr, ccomma);
+ set_cvalue (expr, new CCodeConditionalExpression (ccheck, ccast, cnull));
} else {
set_cvalue (expr, generate_instance_cast (get_cvalue (expr.inner), expr.type_reference.data_type));
}