[vala] codegen: Fix lock statements in classes without private fields
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] codegen: Fix lock statements in classes without private fields
- Date: Sat, 16 Oct 2010 08:45:33 +0000 (UTC)
commit c99412b26c6777230f446e28bc034b2152644aa2
Author: Jürg Billeter <j bitron ch>
Date: Sat Oct 16 10:43:19 2010 +0200
codegen: Fix lock statements in classes without private fields
Fixes bug 629593.
codegen/valagtypemodule.vala | 7 +++----
vala/valaclass.vala | 2 +-
2 files changed, 4 insertions(+), 5 deletions(-)
---
diff --git a/codegen/valagtypemodule.vala b/codegen/valagtypemodule.vala
index 6612f86..e026bbf 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 fd4badd..21b212b 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.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]