From 55f178c629ada663d2a8e5bbed029ec9482f00ea Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Wed, 8 Nov 2006 06:52:50 +0000 Subject: * Fixed an error message that should be a debug message * Fixed "the big segfault" - dbs_sync list was being modified while iterating * over the list, big No-No. Now using a while loop over alpm_list_count. --- lib/libalpm/alpm.c | 10 ++++++---- lib/libalpm/be_files.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'lib/libalpm') diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c index d360fa65..9f6271f1 100644 --- a/lib/libalpm/alpm.c +++ b/lib/libalpm/alpm.c @@ -100,7 +100,7 @@ int alpm_initialize(char *root) */ int alpm_release() { - pmlist_t *i; + int dbs_left = 0; ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1)); @@ -115,9 +115,11 @@ int alpm_release() handle->db_local = NULL; } /* and also sync ones */ - for(i = handle->dbs_sync; i; i = i->next) { - alpm_db_unregister(i->data); - i->data = NULL; + while((dbs_left = alpm_list_count(handle->dbs_sync)) > 0) { + pmdb_t *db = (pmdb_t *)handle->dbs_sync->data; + _alpm_log(PM_LOG_DEBUG, _("removing DB %s, %d remaining..."), db->treename, dbs_left); + alpm_db_unregister(db); + db = NULL; } FREEHANDLE(handle); diff --git a/lib/libalpm/be_files.c b/lib/libalpm/be_files.c index 35a1e981..f90f6979 100644 --- a/lib/libalpm/be_files.c +++ b/lib/libalpm/be_files.c @@ -189,7 +189,7 @@ int _alpm_db_read(pmdb_t *db, unsigned int inforeq, pmpkg_t *info) } if(info == NULL || info->name[0] == 0 || info->version[0] == 0) { - _alpm_log(PM_LOG_ERROR, _("invalid package entry provided to _alpm_db_read")); + _alpm_log(PM_LOG_DEBUG, _("invalid package entry provided to _alpm_db_read, skipping")); return(-1); } -- cgit v1.2.3-70-g09d2