g_return_if_fail (G_IS_PARAM_SPEC (pspec));
if (CLASS_HAS_DERIVED_CLASS (class))
- g_error ("Attempt to add property %s::%s to class after it was derived",
- G_OBJECT_CLASS_NAME (class), pspec->name);
+ g_error ("Attempt to add property %s::%s to class after it was derived", G_OBJECT_CLASS_NAME (class), pspec->name);
+
+ if (!g_type_is_in_init (G_OBJECT_CLASS_TYPE (class)))
+ g_error ("Attempt to add property %s::%s after class was initialised", G_OBJECT_CLASS_NAME (class), pspec->name);
class->flags |= CLASS_HAS_PROPS_FLAG;
g_error ("Attempt to add properties to %s after it was derived",
G_OBJECT_CLASS_NAME (oclass));
+ if (!g_type_is_in_init (G_OBJECT_CLASS_TYPE (oclass)))
+ g_error ("Attempt to add properties %s after it was initialised", G_OBJECT_CLASS_NAME (oclass));
+
oclass_type = G_OBJECT_CLASS_TYPE (oclass);
parent_type = g_type_parent (oclass_type);
if (G_UNLIKELY (type == (GType)-1))
g_error ("can't happen");
}
+
+gboolean
+g_type_is_in_init (GType type)
+{
+ TypeNode *node;
+
+ node = lookup_type_node_I (type);
+
+ return node->data->class.init_state != INITIALIZED;
+}