qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2 07/15] set_property(): push error handling to cal


From: Laszlo Ersek
Subject: [Qemu-devel] [PATCH v2 07/15] set_property(): push error handling to callers
Date: Tue, 5 Feb 2013 21:39:20 +0100

The return type can't be changed to void, because "set_property" must have
type "qemu_opt_loopfunc".

Conversion status (call chains covered or substituted by error propagation
marked with square brackets):

do_device_add -> [qemu_find_opts -> error_report]
do_device_add -> qdev_device_add -> qerror_report
do_device_add -> qdev_device_add -> qbus_find -> qbus_find_recursive
  -> qerror_report
do_device_add -> qdev_device_add -> qbus_find -> qerror_report
do_device_add -> qdev_device_add -> [set_property -> qdev_prop_parse
  -> qerror_report_err]

Signed-off-by: Laszlo Ersek <address@hidden>
---
 hw/qdev-monitor.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c
index 545e66c..da32763 100644
--- a/hw/qdev-monitor.c
+++ b/hw/qdev-monitor.c
@@ -117,8 +117,7 @@ static int set_property(const char *name, const char 
*value, void *opaque)
 
     qdev_prop_parse(ctx->dev, name, value, &err);
     if (error_is_set(&err)) {
-        qerror_report_err(err);
-        error_free(err);
+        error_propagate(ctx->errp, err);
         return -1;
     }
     return 0;
@@ -424,6 +423,7 @@ DeviceState *qdev_device_add(QemuOpts *opts)
     const char *driver, *path, *id;
     DeviceState *qdev;
     BusState *bus;
+    Error *local_err = NULL;
 
     driver = qemu_opt_get(opts, "driver");
     if (!driver) {
@@ -488,9 +488,11 @@ DeviceState *qdev_device_add(QemuOpts *opts)
     }
 
     {
-        PropertyContext ctx = { .dev = qdev, .errp = NULL };
+        PropertyContext ctx = { .dev = qdev, .errp = &local_err };
 
         if (qemu_opt_foreach(opts, set_property, &ctx, 1) != 0) {
+            qerror_report_err(local_err);
+            error_free(local_err);
             qdev_free(qdev);
             return NULL;
         }
-- 
1.7.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]