From: Jürg Billeter Date: Sat, 16 Oct 2010 08:43:19 +0000 (+0200) Subject: codegen: Fix lock statements in classes without private fields X-Git-Tag: 0.11.1~98 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c99412b26c6777230f446e28bc034b2152644aa2;p=thirdparty%2Fvala.git codegen: Fix lock statements in classes without private fields Fixes bug 629593. --- diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala index 6612f86e3..e026bbf3d 100644 --- a/codegen/valagtypemodule.vala +++ b/codegen/valagtypemodule.vala @@ -382,7 +382,6 @@ public class Vala.GTypeModule : GErrorModule { } bool is_gtypeinstance = !cl.is_compact; - bool has_instance_locks = false; bool has_class_locks = false; var instance_priv_struct = new CCodeStruct ("_%sPrivate".printf (cl.get_cname ())); @@ -442,7 +441,7 @@ public class Vala.GTypeModule : GErrorModule { } if (f.get_lock_used ()) { - has_instance_locks = true; + cl.has_private_fields = true; // add field for mutex instance_priv_struct.add_field (mutex_type.get_cname (), get_symbol_lock_name (f.name)); } @@ -462,7 +461,7 @@ public class Vala.GTypeModule : GErrorModule { foreach (Property prop in cl.get_properties ()) { if (prop.binding == MemberBinding.INSTANCE) { if (prop.get_lock_used ()) { - has_instance_locks = true; + cl.has_private_fields = true; // add field for mutex instance_priv_struct.add_field (mutex_type.get_cname (), get_symbol_lock_name (prop.name)); } @@ -487,7 +486,7 @@ public class Vala.GTypeModule : GErrorModule { } /* only add the *Private struct if it is not empty, i.e. we actually have private data */ - if (cl.has_private_fields || cl.get_type_parameters ().size > 0 || has_instance_locks) { + if (cl.has_private_fields || cl.get_type_parameters ().size > 0) { decl_space.add_type_definition (instance_priv_struct); var macro = "(G_TYPE_INSTANCE_GET_PRIVATE ((o), %s, %sPrivate))".printf (cl.get_type_id (), cl.get_cname ()); decl_space.add_type_member_declaration (new CCodeMacroReplacement ("%s_GET_PRIVATE(o)".printf (cl.get_upper_case_cname (null)), macro)); diff --git a/vala/valaclass.vala b/vala/valaclass.vala index fd4badd2d..21b212bb7 100644 --- a/vala/valaclass.vala +++ b/vala/valaclass.vala @@ -95,7 +95,7 @@ public class Vala.Class : ObjectTypeSymbol { /** * Specifies whether this class has private fields. */ - public bool has_private_fields { get; private set; } + public bool has_private_fields { get; set; } /** * Specifies whether this class has class fields.