@samitouri / QOSamiQemu / commits / 24984a97eb

qom: have object_set_props_keyval return bool

This matches the convention established by the object_set_props and object_set_propv methods. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Daniel P. Berrangé committed Apr 17, 2026 at 16:15 UTC 24984a97eb7c3661edf8e3b30f9dd5b84b700ee4
2 files changed +12 -5
include/qom/object.h
+3 -1
@@ -924,8 +924,10 @@ bool type_print_class_properties(const char *type);
924 *
925 * For each key in the dictionary, parse the value string if needed,
926 * then set the corresponding property in @obj.
927 + *
928 + * Returns: %true on success, %false on error.
929 */
928 -void object_set_props_from_keyval(Object *obj, const QDict *qdict,
930 +bool object_set_props_from_keyval(Object *obj, const QDict *qdict,
931 bool from_json, Error **errp);
932
933 /**
qom/object_interfaces.c
+9 -4
@@ -44,13 +44,14 @@ bool user_creatable_can_be_deleted(UserCreatable *uc)
44 }
45 }
46
47 -static void object_set_props_from_qdict(Object *obj, const QDict *qdict,
47 +static bool object_set_props_from_qdict(Object *obj, const QDict *qdict,
48 Visitor *v, Error **errp)
49 {
50 + ERRP_GUARD();
51 const QDictEntry *e;
52
53 if (!visit_start_struct(v, NULL, NULL, 0, errp)) {
53 - return;
54 + return false;
55 }
56 for (e = qdict_first(qdict); e; e = qdict_next(qdict, e)) {
57 if (!object_property_set(obj, e->key, v, errp)) {
@@ -60,19 +61,23 @@ static void object_set_props_from_qdict(Object *obj, const QDict *qdict,
61 visit_check_struct(v, errp);
62 out:
63 visit_end_struct(v, NULL);
64 +
65 + return *errp == NULL;
66 }
67
65 -void object_set_props_from_keyval(Object *obj, const QDict *qdict,
68 +bool object_set_props_from_keyval(Object *obj, const QDict *qdict,
69 bool from_json, Error **errp)
70 {
71 + bool ret;
72 Visitor *v;
73 if (from_json) {
74 v = qobject_input_visitor_new(QOBJECT(qdict));
75 } else {
76 v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
77 }
74 - object_set_props_from_qdict(obj, qdict, v, errp);
78 + ret = object_set_props_from_qdict(obj, qdict, v, errp);
79 visit_free(v);
80 + return ret;
81 }
82
83 Object *user_creatable_add_type(const char *type, const char *id,