From 0c0ec3b013e5f266425c65b5a0743bb1bb655e63 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 30 Oct 2009 00:39:05 +0100 Subject: [PATCH] GValue: Fix cast from nullable GLib.Value Fixes bug 585050. --- codegen/valaccodebasemodule.vala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 7a1b4552a..2266fb61f 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -4005,7 +4005,15 @@ internal class Vala.CCodeBaseModule : CCodeModule { && expr.type_reference.get_type_id () != null) { // explicit conversion from GValue var ccall = new CCodeFunctionCall (get_value_getter_function (expr.type_reference)); - ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, (CCodeExpression) expr.inner.ccodenode)); + CCodeExpression gvalue; + if (expr.inner.value_type.nullable) { + // cast from Value?, no need to get address + gvalue = (CCodeExpression) expr.inner.ccodenode; + } else { + // value getter function expects pointer to GValue, get address of non-null Value + gvalue = new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, (CCodeExpression) expr.inner.ccodenode); + } + ccall.add_argument (gvalue); expr.ccodenode = ccall; if (expr.type_reference is ArrayType) { // null-terminated string array -- 2.47.3