summaryrefslogtreecommitdiffstats
path: root/lib/libalpm/cache.c
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2008-01-12 21:28:22 +0100
committerDan McGee <dan@archlinux.org>2008-01-24 03:13:01 +0100
commit8240da6cb3ff95ad480efe3e1876104024398fae (patch)
tree124bf5ca94dbfa3aa8361fd20ec066b784770581 /lib/libalpm/cache.c
parentbd43a7f155cbd54d58fb45285e2eef1f51c88b00 (diff)
downloadpacman-8240da6cb3ff95ad480efe3e1876104024398fae.tar.gz
pacman-8240da6cb3ff95ad480efe3e1876104024398fae.tar.xz
libalpm/cache.c : don't duplicate packages in pkgcache.
Edit _alpm_db_add_pkgincache to not duplicate packages, because this is not needed, is slower, and uses more memory. This made the max memory usage during base reinstall go from 10.4MB to 9.7MB. Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'lib/libalpm/cache.c')
-rw-r--r--lib/libalpm/cache.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/lib/libalpm/cache.c b/lib/libalpm/cache.c
index 0ad923a5..09fa74c2 100644
--- a/lib/libalpm/cache.c
+++ b/lib/libalpm/cache.c
@@ -81,10 +81,7 @@ void _alpm_db_free_pkgcache(pmdb_t *db)
_alpm_log(PM_LOG_DEBUG, "freeing package cache for repository '%s'\n",
db->treename);
- alpm_list_t *tmp;
- for(tmp = db->pkgcache; tmp; tmp = alpm_list_next(tmp)) {
- _alpm_pkg_free(tmp->data);
- }
+ alpm_list_free_inner(db->pkgcache, (alpm_list_fn_free)_alpm_pkg_free);
alpm_list_free(db->pkgcache);
db->pkgcache = NULL;
@@ -115,21 +112,15 @@ alpm_list_t *_alpm_db_get_pkgcache(pmdb_t *db)
int _alpm_db_add_pkgincache(pmdb_t *db, pmpkg_t *pkg)
{
- pmpkg_t *newpkg;
-
ALPM_LOG_FUNC;
if(db == NULL || pkg == NULL) {
return(-1);
}
- newpkg = _alpm_pkg_dup(pkg);
- if(newpkg == NULL) {
- return(-1);
- }
_alpm_log(PM_LOG_DEBUG, "adding entry '%s' in '%s' cache\n",
- alpm_pkg_get_name(newpkg), db->treename);
- db->pkgcache = alpm_list_add_sorted(db->pkgcache, newpkg, _alpm_pkg_cmp);
+ alpm_pkg_get_name(pkg), db->treename);
+ db->pkgcache = alpm_list_add_sorted(db->pkgcache, pkg, _alpm_pkg_cmp);
_alpm_db_free_grpcache(db);