diff mbox

[v4,13/28] qapi: Make QObject input visitor set *list reliably

Message ID 1488544368-30622-14-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster March 3, 2017, 12:32 p.m. UTC
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>
---
 qapi/qobject-input-visitor.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

Comments

Philippe Mathieu-Daudé March 3, 2017, 7:57 p.m. UTC | #1
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);
>      }
>  }
>
>
diff mbox

Patch

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);
     }
 }