From eeee60a8bb762206fe00c630b7669b38321cee35 Mon Sep 17 00:00:00 2001 From: Luca Bruno Date: Sat, 22 Jun 2013 09:17:46 +0200 Subject: codegen: Don't convert GValue/GVariant on non-null cast Fixes bug 702846 --- codegen/valaccodebasemodule.vala | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'codegen') diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index ec477ccc3..1a90ec095 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -5010,19 +5010,21 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { } public override void visit_cast_expression (CastExpression expr) { - var valuecast = try_cast_value_to_type (get_cvalue (expr.inner), expr.inner.value_type, expr.type_reference, expr); - if (valuecast != null) { - set_cvalue (expr, valuecast); - return; - } + generate_type_declaration (expr.type_reference, cfile); - var variantcast = try_cast_variant_to_type (expr.inner.target_value, expr.type_reference, expr); - if (variantcast != null) { - expr.target_value = variantcast; - return; - } + if (!expr.is_non_null_cast) { + var valuecast = try_cast_value_to_type (get_cvalue (expr.inner), expr.inner.value_type, expr.type_reference, expr); + if (valuecast != null) { + set_cvalue (expr, valuecast); + return; + } - generate_type_declaration (expr.type_reference, cfile); + var variantcast = try_cast_variant_to_type (expr.inner.target_value, expr.type_reference, expr); + if (variantcast != null) { + expr.target_value = variantcast; + return; + } + } var cl = expr.type_reference.data_type as Class; var iface = expr.type_reference.data_type as Interface; -- cgit v1.2.1