On Fri, Jun 10, 2016 at 02:59:55PM -0600, Eric Blake wrote: > On 06/10/2016 02:12 PM, Eduardo Habkost wrote: > > This patch simplifies code that uses a local_err variable just to > > immediately use it for an error_propagate() call. > > > > Coccinelle patch used to perform the changes added to > > scripts/coccinelle/remove_local_err.cocci. > > > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> > > --- > > block.c | 8 ++------ > > block/raw-posix.c | 8 ++------ > > block/raw_bsd.c | 4 +--- > > blockdev.c | 16 +++++----------- > > hw/s390x/s390-virtio-ccw.c | 5 +---- > > hw/s390x/virtio-ccw.c | 28 +++++++--------------------- > > scripts/coccinelle/remove_local_err.cocci | 27 +++++++++++++++++++++++++++ > > target-i386/cpu.c | 4 +--- > > 8 files changed, 46 insertions(+), 54 deletions(-) > > create mode 100644 scripts/coccinelle/remove_local_err.cocci > > > > > +++ b/block.c > > @@ -294,14 +294,12 @@ typedef struct CreateCo { > > > > static void coroutine_fn bdrv_create_co_entry(void *opaque) > > { > > - Error *local_err = NULL; > > int ret; > > > > CreateCo *cco = opaque; > > assert(cco->drv); > > > > - ret = cco->drv->bdrv_create(cco->filename, cco->opts, &local_err); > > - error_propagate(&cco->err, local_err); > > + ret = cco->drv->bdrv_create(cco->filename, cco->opts, &cco->err); > > cco->ret = ret; > > This hunk doesn't get simplified by 3/3; you may want to consider a > manual followup to drop 'int ret' and just assign > cco->drv->bdrv_create() directly to cco->ret. But doesn't change this > patch.
This could become yet another Coccinelle script, but we need to be careful about type conversions, and tell it to do it only if the types of 'ret', 'cc->drv->bdrv_create()' and 'cco->ret' are the same. -- Eduardo