From 7417da939643f682b6628e6fe93d91f8094f016c Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=BCrg=20Billeter?= Date: Tue, 16 Feb 2010 16:41:30 +0100 Subject: [PATCH] Fix public struct constants Fixes bug 610067. --- codegen/valaccodebasemodule.vala | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 458f3e31c..287e494c7 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -910,8 +910,20 @@ internal class Vala.CCodeBaseModule : CCodeModule { if (c.type_reference is ArrayType) { arr = "[]"; } - cdecl.add_declarator (new CCodeVariableDeclarator ("%s%s".printf (c.get_cname (), arr), (CCodeExpression) c.initializer.ccodenode)); - cdecl.modifiers = CCodeModifiers.STATIC; + + var cinitializer = (CCodeExpression) c.initializer.ccodenode; + if (decl_space != source_declarations) { + // never output value in header + // special case needed as this method combines declaration and definition + cinitializer = null; + } + + cdecl.add_declarator (new CCodeVariableDeclarator ("%s%s".printf (c.get_cname (), arr), cinitializer)); + if (c.is_private_symbol ()) { + cdecl.modifiers = CCodeModifiers.STATIC; + } else { + cdecl.modifiers = CCodeModifiers.EXTERN; + } decl_space.add_constant_declaration (cdecl); } else { -- 2.47.3