summaryrefslogtreecommitdiff
path: root/pango/pango-ot-ruleset.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pango-ot-ruleset.c')
-rw-r--r--pango/pango-ot-ruleset.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/pango/pango-ot-ruleset.c b/pango/pango-ot-ruleset.c
index e50b2a1e..521536f6 100644
--- a/pango/pango-ot-ruleset.c
+++ b/pango/pango-ot-ruleset.c
@@ -88,7 +88,8 @@ pango_ot_ruleset_finalize (GObject *object)
PangoOTRuleset *ruleset = PANGO_OT_RULESET (object);
g_array_free (ruleset->rules, TRUE);
- g_object_unref (ruleset->info);
+ if (ruleset->info)
+ g_object_remove_weak_pointer (ruleset->info, &ruleset->info);
parent_class->finalize (object);
}
@@ -107,9 +108,12 @@ pango_ot_ruleset_new (PangoOTInfo *info)
{
PangoOTRuleset *ruleset;
+ g_return_val_if_fail (info != NULL, NULL);
+
ruleset = g_object_new (PANGO_TYPE_OT_RULESET, NULL);
- ruleset->info = g_object_ref (info);
+ ruleset->info = info;
+ g_object_add_weak_pointer (ruleset->info, &ruleset->info);
return ruleset;
}
@@ -132,7 +136,8 @@ pango_ot_ruleset_add_feature (PangoOTRuleset *ruleset,
{
PangoOTRule tmp_rule;
- g_return_if_fail (PANGO_OT_IS_RULESET (ruleset));
+ g_return_if_fail (PANGO_IS_OT_RULESET (ruleset));
+ g_return_if_fail (PANGO_IS_OT_INFO (ruleset->info));
tmp_rule.table_type = table_type;
tmp_rule.feature_index = feature_index;
@@ -159,7 +164,8 @@ pango_ot_ruleset_substitute (PangoOTRuleset *ruleset,
TTO_GSUB gsub = NULL;
- g_return_if_fail (PANGO_OT_IS_RULESET (ruleset));
+ g_return_if_fail (PANGO_IS_OT_RULESET (ruleset));
+ g_return_if_fail (PANGO_IS_OT_INFO (ruleset->info));
for (i = 0; i < ruleset->rules->len; i++)
{
@@ -202,7 +208,8 @@ pango_ot_ruleset_position (PangoOTRuleset *ruleset,
TTO_GPOS gpos = NULL;
- g_return_if_fail (PANGO_OT_IS_RULESET (ruleset));
+ g_return_if_fail (PANGO_IS_OT_RULESET (ruleset));
+ g_return_if_fail (PANGO_IS_OT_INFO (ruleset->info));
for (i = 0; i < ruleset->rules->len; i++)
{