[PULL 24/29] qom: have object_set_props_keyval return bool

2026-05-21 Thread Daniel P . Berrangé
This matches the convention established by the object_set_props and
object_set_propv methods.

Reviewed-by: Philippe Mathieu-Daudé 
Reviewed-by: Marc-André Lureau 
Signed-off-by: Daniel P. Berrangé 
---
 include/qom/object.h|  4 +++-
 qom/object_interfaces.c | 13 +
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index 83b0cd01b5..822f56c87e 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -924,8 +924,10 @@ bool type_print_class_properties(const char *type);
  *
  * For each key in the dictionary, parse the value string if needed,
  * then set the corresponding property in @obj.
+ *
+ * Returns: %true on success, %false on error.
  */
-void object_set_props_from_keyval(Object *obj, const QDict *qdict,
+bool object_set_props_from_keyval(Object *obj, const QDict *qdict,
   bool from_json, Error **errp);
 
 /**
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
index 4377d65b76..50736b80c8 100644
--- a/qom/object_interfaces.c
+++ b/qom/object_interfaces.c
@@ -44,13 +44,14 @@ bool user_creatable_can_be_deleted(UserCreatable *uc)
 }
 }
 
-static void object_set_props_from_qdict(Object *obj, const QDict *qdict,
+static bool object_set_props_from_qdict(Object *obj, const QDict *qdict,
 Visitor *v, Error **errp)
 {
+ERRP_GUARD();
 const QDictEntry *e;
 
 if (!visit_start_struct(v, NULL, NULL, 0, errp)) {
-return;
+return false;
 }
 for (e = qdict_first(qdict); e; e = qdict_next(qdict, e)) {
 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,
 visit_check_struct(v, errp);
 out:
 visit_end_struct(v, NULL);
+
+return *errp == NULL;
 }
 
-void object_set_props_from_keyval(Object *obj, const QDict *qdict,
+bool object_set_props_from_keyval(Object *obj, const QDict *qdict,
   bool from_json, Error **errp)
 {
+bool ret;
 Visitor *v;
 if (from_json) {
 v = qobject_input_visitor_new(QOBJECT(qdict));
 } else {
 v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
 }
-object_set_props_from_qdict(obj, qdict, v, errp);
+ret = object_set_props_from_qdict(obj, qdict, v, errp);
 visit_free(v);
+return ret;
 }
 
 Object *user_creatable_add_type(const char *type, const char *id,
-- 
2.54.0




[PULL 24/29] qom: have object_set_props_keyval return bool

2026-05-20 Thread Daniel P . Berrangé
This matches the convention established by the object_set_props and
object_set_propv methods.

Reviewed-by: Philippe Mathieu-Daudé 
Reviewed-by: Marc-André Lureau 
Signed-off-by: Daniel P. Berrangé 
---
 include/qom/object.h|  4 +++-
 qom/object_interfaces.c | 13 +
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index 83b0cd01b5..822f56c87e 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -924,8 +924,10 @@ bool type_print_class_properties(const char *type);
  *
  * For each key in the dictionary, parse the value string if needed,
  * then set the corresponding property in @obj.
+ *
+ * Returns: %true on success, %false on error.
  */
-void object_set_props_from_keyval(Object *obj, const QDict *qdict,
+bool object_set_props_from_keyval(Object *obj, const QDict *qdict,
   bool from_json, Error **errp);
 
 /**
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
index 4377d65b76..50736b80c8 100644
--- a/qom/object_interfaces.c
+++ b/qom/object_interfaces.c
@@ -44,13 +44,14 @@ bool user_creatable_can_be_deleted(UserCreatable *uc)
 }
 }
 
-static void object_set_props_from_qdict(Object *obj, const QDict *qdict,
+static bool object_set_props_from_qdict(Object *obj, const QDict *qdict,
 Visitor *v, Error **errp)
 {
+ERRP_GUARD();
 const QDictEntry *e;
 
 if (!visit_start_struct(v, NULL, NULL, 0, errp)) {
-return;
+return false;
 }
 for (e = qdict_first(qdict); e; e = qdict_next(qdict, e)) {
 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,
 visit_check_struct(v, errp);
 out:
 visit_end_struct(v, NULL);
+
+return *errp == NULL;
 }
 
-void object_set_props_from_keyval(Object *obj, const QDict *qdict,
+bool object_set_props_from_keyval(Object *obj, const QDict *qdict,
   bool from_json, Error **errp)
 {
+bool ret;
 Visitor *v;
 if (from_json) {
 v = qobject_input_visitor_new(QOBJECT(qdict));
 } else {
 v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
 }
-object_set_props_from_qdict(obj, qdict, v, errp);
+ret = object_set_props_from_qdict(obj, qdict, v, errp);
 visit_free(v);
+return ret;
 }
 
 Object *user_creatable_add_type(const char *type, const char *id,
-- 
2.54.0