summaryrefslogtreecommitdiff
path: root/atspi/atspi-matchrule.c
diff options
context:
space:
mode:
Diffstat (limited to 'atspi/atspi-matchrule.c')
-rw-r--r--atspi/atspi-matchrule.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/atspi/atspi-matchrule.c b/atspi/atspi-matchrule.c
index f706f564..3083bf1d 100644
--- a/atspi/atspi-matchrule.c
+++ b/atspi/atspi-matchrule.c
@@ -31,17 +31,35 @@ atspi_match_rule_init (AtspiMatchRule *match_rule)
}
static void
-atspi_match_rule_finalize (GObject *obj)
+atspi_match_rule_dispose (GObject *object)
{
- AtspiMatchRule *rule = ATSPI_MATCH_RULE (obj);
+ AtspiMatchRule *rule = ATSPI_MATCH_RULE (object);
if (rule->states)
+ {
g_object_unref (rule->states);
+ rule->states = NULL;
+ }
+
if (rule->attributes)
+ {
g_hash_table_unref (rule->attributes);
+ rule->attributes = NULL;
+ }
+
+ G_OBJECT_CLASS (atspi_match_rule_parent_class)->dispose (object);
+}
+
+static void
+atspi_match_rule_finalize (GObject *object)
+{
+ AtspiMatchRule *rule = ATSPI_MATCH_RULE (object);
+
/* TODO: Check that interfaces don't leak */
if (rule->interfaces)
g_array_free (rule->interfaces, TRUE);
+
+ G_OBJECT_CLASS (atspi_match_rule_parent_class)->finalize (object);
}
static void
@@ -49,6 +67,7 @@ atspi_match_rule_class_init (AtspiMatchRuleClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->dispose = atspi_match_rule_dispose;
object_class->finalize = atspi_match_rule_finalize;
}