do not free the cache right before using it!
This commit is contained in:
parent
fa627d4776
commit
5d5d7d6339
1 changed files with 10 additions and 14 deletions
|
@ -282,25 +282,21 @@ int alpm_db_update(PM_DB *db, char *archive, char *ts)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(stat(archive, &buf)) {
|
/* remove the old dir */
|
||||||
/* not found */
|
_alpm_log(PM_LOG_FLOW2, "flushing database %s/%s", handle->dbpath, db->treename);
|
||||||
RET_ERR(PM_ERR_NOT_A_FILE, -1);
|
for(lp = db_get_pkgcache(db); lp; lp = lp->next) {
|
||||||
|
if(db_remove(db, lp->data) == -1) {
|
||||||
|
if(lp->data) {
|
||||||
|
_alpm_log(PM_LOG_ERROR, "could not remove database entry %s/%s", db->treename,
|
||||||
|
((pmpkg_t *)lp->data)->name);
|
||||||
|
}
|
||||||
|
RET_ERR(PM_ERR_XXX, -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cache needs to be rebuild */
|
/* Cache needs to be rebuild */
|
||||||
db_free_pkgcache(db);
|
db_free_pkgcache(db);
|
||||||
|
|
||||||
/* remove the old dir */
|
|
||||||
_alpm_log(PM_LOG_FLOW2, "removing database %s/%s", handle->dbpath, db->treename);
|
|
||||||
for(lp = alpm_db_getpkgcache(db); lp; lp = alpm_list_next(lp)) {
|
|
||||||
db_remove(db, alpm_list_getdata(lp));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* make the new dir */
|
|
||||||
if(db_create(handle->root, handle->dbpath, db->treename) != 0) {
|
|
||||||
RET_ERR(PM_ERR_DB_CREATE, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* uncompress the sync database */
|
/* uncompress the sync database */
|
||||||
/* ORE
|
/* ORE
|
||||||
we should not simply unpack the archive, but better parse it and
|
we should not simply unpack the archive, but better parse it and
|
||||||
|
|
Loading…
Add table
Reference in a new issue