diff options
author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2022-12-12 18:18:02 +0100 |
---|---|---|
committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2022-12-12 19:40:58 +0100 |
commit | f6ac7bc907ecbd18c779e107d33bfade6bec3d36 (patch) | |
tree | c0a72e2914a7b5ce3b44ed1c39364cba680151ac /gobject | |
parent | 5dc8d2ca0005eca3b33a4a4e0865d48a2c279b20 (diff) | |
download | glib-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.c | 14 |
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; } |