On Fri, Feb 08, 2019 at 01:37:06PM -0500, John Ferlan wrote: > Let's make use of the auto __cleanup capabilities. This also allows > for the cleanup of some goto paths. > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > @@ -459,15 +454,15 @@ virStorageBackendLogicalFindPoolSourcesFunc(char **const groups, > void *data) > { > virStoragePoolSourceListPtr sourceList = data; > - char *pvname = NULL; > - char *vgname = NULL; > size_t i; > virStoragePoolSourceDevicePtr dev; > virStoragePoolSource *thisSource; > + VIR_AUTOFREE(char *) pvname = NULL; > + VIR_AUTOFREE(char *) vgname = NULL; > > if (VIR_STRDUP(pvname, groups[0]) < 0 || > VIR_STRDUP(vgname, groups[1]) < 0) > - goto error; > + return -1; > > thisSource = NULL; > for (i = 0; i < sourceList->nsources; i++) { > @@ -479,30 +474,22 @@ virStorageBackendLogicalFindPoolSourcesFunc(char **const groups, > > if (thisSource == NULL) { > if (!(thisSource = virStoragePoolSourceListNewSource(sourceList))) > - goto error; > + return -1; > > - thisSource->name = vgname; > + VIR_STEAL_PTR(thisSource->name, vgname); > } > - else > - VIR_FREE(vgname); > > if (VIR_REALLOC_N(thisSource->devices, thisSource->ndevice + 1) != 0) > - goto error; > + return -1; > > dev = &thisSource->devices[thisSource->ndevice]; > thisSource->ndevice++; > thisSource->format = VIR_STORAGE_POOL_LOGICAL_LVM2; > > memset(dev, 0, sizeof(*dev)); > - dev->path = pvname; > + VIR_STEAL_PTR(dev->path, pvname); I still don't see why ^this needs to stay and can't be separated into a preceding patch. > > return 0; > - > - error: > - VIR_FREE(pvname); > - VIR_FREE(vgname); > - > - return -1; > } ... > > diff --git a/src/storage/storage_file_gluster.c b/src/storage/storage_file_gluster.c > index f8bbde8cfe..7c2189d297 100644 > --- a/src/storage/storage_file_gluster.c > +++ b/src/storage/storage_file_gluster.c > @@ -258,10 +258,10 @@ virStorageFileBackendGlusterReadlinkCallback(const char *path, > void *data) > { > virStorageFileBackendGlusterPrivPtr priv = data; > - char *buf = NULL; > size_t bufsiz = 0; > ssize_t ret; > struct stat st; > + VIR_AUTOFREE(char *) buf = NULL; > > *linkpath = NULL; > > @@ -277,13 +277,13 @@ virStorageFileBackendGlusterReadlinkCallback(const char *path, > > realloc: > if (VIR_EXPAND_N(buf, bufsiz, 256) < 0) > - goto error; > + return -1; > > if ((ret = glfs_readlink(priv->vol, path, buf, bufsiz)) < 0) { > virReportSystemError(errno, > _("failed to read link of gluster file '%s'"), > path); > - goto error; > + return -1; > } > > if (ret == bufsiz) > @@ -291,13 +291,9 @@ virStorageFileBackendGlusterReadlinkCallback(const char *path, > > buf[ret] = '\0'; > > - *linkpath = buf; > + VIR_STEAL_PTR(*linkpath, buf); ^This VIR_STEAL_PTR can also be separated, it doesn't depend on the VIR_AUTOFREE stuff, it's a simple 1 change hunk. Erik