On Sat, Jul 28, 2018 at 11:31:33PM +0530, Sukrit Bhatnagar wrote: > By making use of GNU C's cleanup attribute handled by the > VIR_AUTOPTR macro for declaring aggregate pointer variables, > majority of the calls to *Free functions can be dropped, which > in turn leads to getting rid of most of our cleanup sections. > > Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@xxxxxxxxx> > --- > src/util/virnetdevopenvswitch.c | 106 +++++++++++++++------------------------- > 1 file changed, 40 insertions(+), 66 deletions(-) > > diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c > index a9c5e2a..eae5861 100644 > --- a/src/util/virnetdevopenvswitch.c > +++ b/src/util/virnetdevopenvswitch.c > @@ -76,9 +76,7 @@ virNetDevOpenvswitchAddTimeout(virCommandPtr cmd) > static int > virNetDevOpenvswitchConstructVlans(virCommandPtr cmd, virNetDevVlanPtr virtVlan) > { > - int ret = -1; > size_t i = 0; > - virBuffer buf = VIR_BUFFER_INITIALIZER; > > if (!virtVlan || !virtVlan->nTags) > return 0; > @@ -98,7 +96,12 @@ virNetDevOpenvswitchConstructVlans(virCommandPtr cmd, virNetDevVlanPtr virtVlan) > } > > if (virtVlan->trunk) { > - virBufferAddLit(&buf, "trunk="); > + VIR_AUTOPTR(virBuffer) buf = NULL; > + > + if (VIR_ALLOC(buf) < 0) > + return -1; > + > + virBufferAddLit(buf, "trunk="); > > /* > * Trunk ports have at least one VLAN. Do the first one > @@ -106,24 +109,21 @@ virNetDevOpenvswitchConstructVlans(virCommandPtr cmd, virNetDevVlanPtr virtVlan) > * start of the for loop if there are more than one VLANs > * on this trunk port. > */ > - virBufferAsprintf(&buf, "%d", virtVlan->tag[i]); > + virBufferAsprintf(buf, "%d", virtVlan->tag[i]); > > for (i = 1; i < virtVlan->nTags; i++) { > - virBufferAddLit(&buf, ","); > - virBufferAsprintf(&buf, "%d", virtVlan->tag[i]); > + virBufferAddLit(buf, ","); > + virBufferAsprintf(buf, "%d", virtVlan->tag[i]); > } > > - if (virBufferCheckError(&buf) < 0) > - goto cleanup; > - virCommandAddArg(cmd, virBufferCurrentContent(&buf)); > + if (virBufferCheckError(buf) < 0) > + return -1; > + virCommandAddArg(cmd, virBufferCurrentContent(buf)); > } else if (virtVlan->nTags) { > virCommandAddArgFormat(cmd, "tag=%d", virtVlan->tag[0]); > } > > - ret = 0; > - cleanup: > - virBufferFreeAndReset(&buf); > - return ret; > + return 0; The obvious problem with virBuffer :)...otherwise it's fine, + the ordering issue of the declarations, that applies to all patches. Erik -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list