From: Jürg Billeter Date: Mon, 15 Dec 2008 09:43:40 +0000 (+0000) Subject: Fix comparison of nullable and non-nullable values X-Git-Tag: VALA_0_5_3~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc2673fc3ee7b735fddbb40e7b61f2d8553fd15c;p=thirdparty%2Fvala.git Fix comparison of nullable and non-nullable values 2008-12-15 Jürg Billeter * gobject/valaccodebasemodule.vala: Fix comparison of nullable and non-nullable values svn path=/trunk/; revision=2156 --- diff --git a/ChangeLog b/ChangeLog index 3a478ef0b..53161ad55 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-12-15 Jürg Billeter + + * gobject/valaccodebasemodule.vala: + + Fix comparison of nullable and non-nullable values + 2008-12-15 Jürg Billeter * gobject/valaccodestructmodule.vala: diff --git a/gobject/valaccodebasemodule.vala b/gobject/valaccodebasemodule.vala index 313386f4c..758187f0d 100644 --- a/gobject/valaccodebasemodule.vala +++ b/gobject/valaccodebasemodule.vala @@ -2987,12 +2987,17 @@ public class Vala.CCodeBaseModule : CCodeModule { cright = new InstanceCast (cright, left_cl); } } - } else if (left_type_as_struct != null && !expr.left.value_type.nullable - && expr.right.value_type is NullType) { - cleft = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, cleft); - } else if (right_type_as_struct != null && !expr.right.value_type.nullable - && expr.left.value_type is NullType) { - cright = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, cright); + } else if (left_type_as_struct != null && right_type_as_struct != null) { + // FIXME generate and use compare/equal function for real structs + if (expr.left.value_type.nullable && expr.right.value_type.nullable) { + // FIXME also compare contents, not just address + } else if (expr.left.value_type.nullable) { + // FIXME check left value is not null + cleft = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, cleft); + } else if (expr.right.value_type.nullable) { + // FIXME check right value is not null + cright = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, cright); + } } }