]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix public struct constants
authorJürg Billeter <j@bitron.ch>
Tue, 16 Feb 2010 15:41:30 +0000 (16:41 +0100)
committerJürg Billeter <j@bitron.ch>
Tue, 16 Feb 2010 15:42:42 +0000 (16:42 +0100)
Fixes bug 610067.

codegen/valaccodebasemodule.vala

index 458f3e31cc9566e96c2f4a19f4baec2a76d593df..287e494c759cb6b5ebffcf9a7801e606d2314cb3 100644 (file)
@@ -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 {