Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=fe6f38f7042f497f08311a067698a4faa4cf906a
commit fe6f38f7042f497f08311a067698a4faa4cf906a Author: Michel Hermier <[email protected]> Date: Thu Nov 7 13:18:28 2013 +0100 libpacman: Avoid creating an extra dummy package, and avoid leaking a package in _pacman_add_addtarget. diff --git a/lib/libpacman/add.c b/lib/libpacman/add.c index 3ed5f4b..3b1be8b 100644 --- a/lib/libpacman/add.c +++ b/lib/libpacman/add.c @@ -122,19 +122,14 @@ int _pacman_add_addtarget(pmtrans_t *trans, const char *name) pmpkg_t *pkg = i->data; if(strcmp(pkg->name, _pacman_pkg_getinfo(info, PM_PKG_NAME)) == 0) { if(_pacman_versioncmp(pkg->version, info->version) < 0) { - pmpkg_t *newpkg; _pacman_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list"), pkg->name, pkg->version, info->version); - if((newpkg = _pacman_pkg_load(name)) == NULL) { - /* pm_errno is already set by pkg_load() */ - goto error; - } - FREEPKG(i->data); - i->data = newpkg; + _pacman_ptrswap(&i->data, &info); } else { _pacman_log(PM_LOG_WARNING, _("newer version %s-%s is in the target list -- skipping"), pkg->name, pkg->version, info->version); } + FREEPKG(info); return(0); } } diff --git a/lib/libpacman/util.h b/lib/libpacman/util.h index 6bb7783..95cfe1a 100644 --- a/lib/libpacman/util.h +++ b/lib/libpacman/util.h @@ -111,6 +111,13 @@ static inline void *_pacman_zalloc(size_t size) return ptr; } +static inline void _pacman_ptrswap(void **ptr1, void **ptr2) +{ + void *tmp = *ptr2; + *ptr2 = *ptr1; + *ptr1 = tmp; +} + #endif /* _PACMAN_UTIL_H */ /* vim: set ts=2 sw=2 noet: */ _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
