On 03/03/2017 09:32 AM, Markus Armbruster wrote:
> qobject_input_start_struct() sets *list, except when it fails because
> qobject_input_get_object() fails, i.e. the input object doesn't exist.
>
> All the other input visitor start_struct(), start_list(),
> start_alternate() always set *obj / *list.
>
> Change qobject_input_start_struct() to match.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> qapi/qobject-input-visitor.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c
> index 2c2f883..d58696c 100644
> --- a/qapi/qobject-input-visitor.c
> +++ b/qapi/qobject-input-visitor.c
> @@ -196,25 +196,21 @@ static void qobject_input_start_list(Visitor *v, const char *name,
> QObject *qobj = qobject_input_get_object(qiv, name, true, errp);
> const QListEntry *entry;
>
> + if (list) {
> + *list = NULL;
> + }
> if (!qobj) {
> return;
> }
> if (qobject_type(qobj) != QTYPE_QLIST) {
> - if (list) {
> - *list = NULL;
> - }
> error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
> "list");
> return;
> }
>
> entry = qobject_input_push(qiv, qobj, list);
> - if (list) {
> - if (entry) {
> - *list = g_malloc0(size);
> - } else {
> - *list = NULL;
> - }
> + if (entry && list) {
> + *list = g_malloc0(size);
> }
> }
>
>