summaryrefslogtreecommitdiff
path: root/gobject
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2022-12-12 18:18:02 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2022-12-12 19:40:58 +0100
commitf6ac7bc907ecbd18c779e107d33bfade6bec3d36 (patch)
treec0a72e2914a7b5ce3b44ed1c39364cba680151ac /gobject
parent5dc8d2ca0005eca3b33a4a4e0865d48a2c279b20 (diff)
downloadglib-f6ac7bc907ecbd18c779e107d33bfade6bec3d36.tar.gz
gtype: Use is_final node bit to check if a type can be derived
Diffstat (limited to 'gobject')
-rw-r--r--gobject/gtype.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gobject/gtype.c b/gobject/gtype.c
index 72ddae25e..77feb7d4a 100644
--- a/gobject/gtype.c
+++ b/gobject/gtype.c
@@ -797,6 +797,13 @@ check_derivation_I (GType parent_type,
type_descriptive_name_I (parent_type));
return FALSE;
}
+ if (pnode->is_final)
+ {
+ g_critical ("cannot derive '%s' from final parent type '%s'",
+ type_name,
+ NODE_NAME (pnode));
+ return FALSE;
+ }
finfo = type_node_fundamental_info_I (pnode);
/* ensure flat derivability */
if (!(finfo->type_flags & G_TYPE_FLAG_DERIVABLE))
@@ -815,13 +822,6 @@ check_derivation_I (GType parent_type,
NODE_NAME (pnode));
return FALSE;
}
- if ((G_TYPE_FLAG_FINAL & GPOINTER_TO_UINT (type_get_qdata_L (pnode, static_quark_type_flags))) == G_TYPE_FLAG_FINAL)
- {
- g_critical ("cannot derive '%s' from final parent type '%s'",
- type_name,
- NODE_NAME (pnode));
- return FALSE;
- }
return TRUE;
}