On 29/01/14 03:58, Silvan Jegen wrote: > On Tue, Jan 28, 2014 at 12:32:13PM -0500, Andrew Gregory wrote: >> On 01/28/14 at 05:50pm, Silvan Jegen wrote: >>> Signed-off-by: Silvan Jegen <[email protected]> >>> --- >>> src/pacman/pacman.c | 12 ++++++------ >>> 1 file changed, 6 insertions(+), 6 deletions(-) >>> >>> diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c >>> index 7329f0f..1d821ef 100644 >>> --- a/src/pacman/pacman.c >>> +++ b/src/pacman/pacman.c >>> @@ -262,13 +262,13 @@ static void setuseragent(void) >>> static void cleanup(int ret) >>> { >>> /* free alpm library resources */ >> >> This comment applies specifically to the alpm_release call and either >> needs to be moved with it or deleted. > > My bad. > > >>> - if(config->handle && alpm_release(config->handle) == -1) { >>> - pm_printf(ALPM_LOG_ERROR, "error releasing alpm library\n"); >>> - } >>> - >>> - /* free memory */ >>> - FREELIST(pm_targets); >>> if(config) { >>> + if(config->handle && alpm_release(config->handle) == -1) { >>> + pm_printf(ALPM_LOG_ERROR, "error releasing alpm >>> library\n"); >>> + } >>> + >>> + /* free memory */ >>> + FREELIST(pm_targets); >> >> pm_targets is independent of config and needs to be freed whether >> config is NULL or not. > > Ditto. > > A corrected version of the patch can be found below. Hope I got it right > this time. > > > -->8-- (for use with git am --scissors) > Subject: [PATCH v2] Move NULL check before dereference > > Signed-off-by: Silvan Jegen <[email protected]> > --- > src/pacman/pacman.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c > index 7329f0f..3ecced5 100644 > --- a/src/pacman/pacman.c > +++ b/src/pacman/pacman.c > @@ -261,18 +261,18 @@ static void setuseragent(void) > */ > static void cleanup(int ret) > { > - /* free alpm library resources */ > - if(config->handle && alpm_release(config->handle) == -1) { > - pm_printf(ALPM_LOG_ERROR, "error releasing alpm library\n"); > - } > - > - /* free memory */ > - FREELIST(pm_targets); > if(config) { > + /* free alpm library resources */ > + if(config->handle && alpm_release(config->handle) == -1) { > + pm_printf(ALPM_LOG_ERROR, "error releasing alpm > library\n"); > + } > + > config_free(config); > config = NULL; > } > > + /* free memory */ > + FREELIST(pm_targets); > exit(ret); > } >
This version looks fine. Allan
