Commit 58346214 authored by Thomas Huth's avatar Thomas Huth Committed by Eduardo Habkost
Browse files

qdev_monitor: Simplify error handling in qdev_device_add()



Instead of doing the clean-ups on errors multiple times, introduce
a jump label at the end of the function that can be used by all
error paths that need this cleanup.

Suggested-by: default avatarIgor Mammedov <imammedo@redhat.com>
Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
Message-Id: <1509617407-21191-2-git-send-email-thuth@redhat.com>
Reviewed-by: default avatarCornelia Huck <cohuck@redhat.com>
Signed-off-by: default avatarEduardo Habkost <ehabkost@redhat.com>
parent ef18310d
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -619,23 +619,23 @@ DeviceState *qdev_device_add(QemuOpts *opts, Error **errp)

    /* set properties */
    if (qemu_opt_foreach(opts, set_property, dev, &err)) {
        error_propagate(errp, err);
        object_unparent(OBJECT(dev));
        object_unref(OBJECT(dev));
        return NULL;
        goto err_del_dev;
    }

    dev->opts = opts;
    object_property_set_bool(OBJECT(dev), true, "realized", &err);
    if (err != NULL) {
        error_propagate(errp, err);
        dev->opts = NULL;
        goto err_del_dev;
    }
    return dev;

err_del_dev:
    error_propagate(errp, err);
    object_unparent(OBJECT(dev));
    object_unref(OBJECT(dev));
    return NULL;
}
    return dev;
}


#define qdev_printf(fmt, ...) monitor_printf(mon, "%*s" fmt, indent, "", ## __VA_ARGS__)