On 13/07/2018 09:57, Thomas Huth wrote: > Since we are in hard freeze already, I'd rather prefer to keep it > simple, without the variable args for now (we don't need them yet). > Especially since we can easily add them later when we need them, > changing the prototype from > > void object_initialize_child(Object *parentobj, const char *propname, > void *childobj, size_t size, > const char *type, Error **errp); > > to > > void object_initialize_child(Object *parentobj, const char *propname, > void *childobj, size_t size, > const char *type, Error **errp, ...); > > should not affect any of the existing caller sites later. > > And yes, I think these functions should have "child" in their names, so > I'll continue with object_initialize_child now. Renaming > object_new_with_props to object_new_child also sounds like a good idea > to me, but that's something for the time when the hard freeze is over.
It's true that we are in hard freeze, but now that I've noticed the parallel with object_new_with_props, it seems to me that making the functions subtly different (in naming or functionality) is just being sloppy. A search-and-replace patch is acceptable for hard freeze if there is a good reason for it, and the rest is just copying code from object_new_with_props into the no-malloc version. The variable arguments are handled simply by if (object_set_propv(obj, &local_err, vargs) < 0) { goto error; } and another thing to do is if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { user_creatable_complete(obj, &local_err); if (local_err) { object_unparent(obj); goto error; } } which is included in object_new_with_propv. Thanks, Paolo