qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: peter.maydell@linaro.org
Cc: qemu-devel@nongnu.org, anthony@codemonkey.ws
Subject: [Qemu-devel] [PULL 30/32] qapi: Clean up null checking in generated visitors
Date: Mon,  3 Mar 2014 12:12:21 -0500	[thread overview]
Message-ID: <1393866743-17385-31-git-send-email-lcapitulino@redhat.com> (raw)
In-Reply-To: <1393866743-17385-1-git-send-email-lcapitulino@redhat.com>

From: Markus Armbruster <armbru@redhat.com>

Visitors get passed a pointer to the visited object.  The generated
visitors try to cope with this pointer being null in some places, for
instance like this:

    visit_start_optional(m, obj ? &(*obj)->has_name : NULL, "name", &err);

visit_start_optional() passes its second argument to Visitor method
start_optional.  Three out of three methods dereference it
unconditionally.

I fail to see how this pointer could legitimately be null.

All this useless null checking is highly redundant, which Coverity
duly reports.  About 200 times.

Remove the useless null checks.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 scripts/qapi-visit.py | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py
index 97e9b11..c6de9ae 100644
--- a/scripts/qapi-visit.py
+++ b/scripts/qapi-visit.py
@@ -47,9 +47,9 @@ static void visit_type_%(full_name)s_fields(Visitor *m, %(name)s ** obj, Error *
 
     if base:
         ret += mcgen('''
-visit_start_implicit_struct(m, obj ? (void**) &(*obj)->%(c_name)s : NULL, sizeof(%(type)s), &err);
+visit_start_implicit_struct(m, (void**) &(*obj)->%(c_name)s, sizeof(%(type)s), &err);
 if (!err) {
-    visit_type_%(type)s_fields(m, obj ? &(*obj)->%(c_prefix)s%(c_name)s : NULL, &err);
+    visit_type_%(type)s_fields(m, &(*obj)->%(c_prefix)s%(c_name)s, &err);
     error_propagate(errp, err);
     err = NULL;
     visit_end_implicit_struct(m, &err);
@@ -61,8 +61,8 @@ if (!err) {
     for argname, argentry, optional, structured in parse_args(members):
         if optional:
             ret += mcgen('''
-visit_start_optional(m, obj ? &(*obj)->%(c_prefix)shas_%(c_name)s : NULL, "%(name)s", &err);
-if (obj && (*obj)->%(prefix)shas_%(c_name)s) {
+visit_start_optional(m, &(*obj)->%(c_prefix)shas_%(c_name)s, "%(name)s", &err);
+if ((*obj)->%(prefix)shas_%(c_name)s) {
 ''',
                          c_prefix=c_var(field_prefix), prefix=field_prefix,
                          c_name=c_var(argname), name=argname)
@@ -72,7 +72,7 @@ if (obj && (*obj)->%(prefix)shas_%(c_name)s) {
             ret += generate_visit_struct_body(full_name, argname, argentry)
         else:
             ret += mcgen('''
-visit_type_%(type)s(m, obj ? &(*obj)->%(c_prefix)s%(c_name)s : NULL, "%(name)s", &err);
+visit_type_%(type)s(m, &(*obj)->%(c_prefix)s%(c_name)s, "%(name)s", &err);
 ''',
                          c_prefix=c_var(field_prefix), prefix=field_prefix,
                          type=type_name(argentry), c_name=c_var(argname),
@@ -121,7 +121,7 @@ visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(name)s), &err);
 
     ret += mcgen('''
 if (!err) {
-    if (!obj || *obj) {
+    if (*obj) {
         visit_type_%(name)s_fields(m, obj, &err);
         error_propagate(errp, err);
         err = NULL;
@@ -273,7 +273,7 @@ void visit_type_%(name)s(Visitor *m, %(name)s ** obj, const char *name, Error **
     if (!error_is_set(errp)) {
         visit_start_struct(m, (void **)obj, "%(name)s", name, sizeof(%(name)s), &err);
         if (!err) {
-            if (obj && *obj) {
+            if (*obj) {
 ''',
                  name=name)
 
-- 
1.8.1.4

  parent reply	other threads:[~2014-03-03 18:20 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-03 17:11 [Qemu-devel] [PULL 00/32] QMP queue Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 01/32] QMP: Allow dot separated dict path arguments in qmp-shell Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 02/32] MAINTAINERS: update status for HMP, QAPI and QMP trees Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 03/32] dump: const-qualify the buf of WriteCoreDumpFunction Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 04/32] dump: add argument to write_elfxx_notes Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 05/32] dump: add API to write header of flatten format Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 06/32] dump: add API to write vmcore Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 07/32] dump: add API to write elf notes to buffer Luiz Capitulino
2014-03-03 17:11 ` [Qemu-devel] [PULL 08/32] dump: add support for lzo/snappy Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 09/32] dump: add members to DumpState and init some of them Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 10/32] dump: add API to write dump header Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 11/32] dump: add API to write dump_bitmap Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 12/32] dump: add APIs to operate DataCache Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 13/32] dump: add API to write dump pages Luiz Capitulino
2014-03-03 19:05   ` Eric Blake
2014-03-03 17:12 ` [Qemu-devel] [PULL 14/32] dump: make kdump-compressed format available for 'dump-guest-memory' Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 15/32] Define the architecture for compressed dump format Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 16/32] dump: add 'query-dump-guest-memory-capability' command Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 17/32] qmp: Check for returned data from __json_read in get_events Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 18/32] qerror: Improve QERR_DEVICE_NOT_ACTIVE message Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 19/32] monitor: Remove left-over code in do_info_profile Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 20/32] tests/qapi-schema: Actually check successful QMP command response Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 21/32] tests/qapi-schema: Cover optional command arguments Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 22/32] tests/qapi-schema: Cover simple argument types Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 23/32] tests/qapi-schema: Cover anonymous union types Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 24/32] tests/qapi-schema: Cover complex types with base Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 25/32] tests/qapi-schema: Cover union " Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 26/32] tests/qapi-schema: Cover flat union types Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 27/32] qapi: Fix licensing of scripts Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 28/32] qapi: Drop nonsensical header guard in generated qapi-visit.c Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 29/32] qapi: Drop unused code in qapi-commands.py Luiz Capitulino
2014-03-03 17:12 ` Luiz Capitulino [this message]
2014-03-03 17:12 ` [Qemu-devel] [PULL 31/32] qapi: Clean up superfluous null check in qapi_dealloc_type_str() Luiz Capitulino
2014-03-03 17:12 ` [Qemu-devel] [PULL 32/32] qapi: Add missing null check to opts_start_struct() Luiz Capitulino
2014-03-04 18:13 ` [Qemu-devel] [PULL 00/32] QMP queue Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1393866743-17385-31-git-send-email-lcapitulino@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).