On 7/2/20 10:49 AM, Markus Armbruster wrote:
When all we do with an Error we receive into a local variable is
propagating to somewhere else, we can just as well receive it there
right away.  Convert

     if (!foo(..., &err)) {
         ...
         error_propagate(errp, err);
         ...
         return ...
     }

to

     if (!foo(..., errp)) {
         ...
         ...
         return ...
     }



Not exactly elegant, I'm afraid.

True, but it is still reasonable enough to use.


The "when != goto lbl;" is necessary to avoid transforming

spelled "when != lbl:" above in rule1 and rule2


          if (fun(args, &err)) {
              goto out
          }
          ...
      out:
          error_propagate(errp, err);

even though other paths to label out still need the error_propagate().
For an actual example, see sclp_realize().

Without the "when strict", Coccinelle transforms vfio_msix_setup(),
incorrectly.  I don't know what exactly "when strict" does, only that
it helps here.

The match of return is narrower than what I want, but I can't figure
out how to express "return where the operand doesn't use @err".  For
an example where it's too narrow, see vfio_intx_enable().

Silently fails to convert hw/arm/armsse.c, because Coccinelle gets
confused by ARMSSE being used both as typedef and function-like macro
there.  Converted manually.

Line breaks tidied up manually.  One nested declaration of @local_err
deleted manually.  Preexisting unwanted blank line dropped in
hw/riscv/sifive_e.c.

Signed-off-by: Markus Armbruster <arm...@redhat.com>
---

  114 files changed, 376 insertions(+), 884 deletions(-)

Big, but sane.  Picks up the spots I noticed in 33/44, and then some ;)

Reviewed-by: Eric Blake <ebl...@redhat.com>

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org


Reply via email to