_alpm_filecache_setup() destroys the list of cachedirs when it finds no writeable directories in the config. This put us in an awkward situation where _alpm_filecache_find() would locate a downloaded file in a r/o cachedir, but then fail to install it after _alpm_filecache_setup() is called (with a NULL argument). Change this behavior to merely prepend the temporary directory to the list of available cachedirs. Dan broke it in e07547ee4ed4. Reported-by: Rémy Oudompheng <remy@archlinux.org> Signed-off-by: Dave Reisner <dreisner@archlinux.org> --- lib/libalpm/util.c | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c index 44dead8..58274ed 100644 --- a/lib/libalpm/util.c +++ b/lib/libalpm/util.c @@ -699,10 +699,8 @@ const char *_alpm_filecache_setup(alpm_handle_t *handle) } else { tmpdir = "/tmp"; } - i = alpm_list_add(NULL, tmpdir); - alpm_option_set_cachedirs(handle, i); - alpm_list_free(i); - cachedir = handle->cachedirs->data; + alpm_option_add_cachedir(handle, tmpdir); + cachedir = handle->cachedirs->prev->data; _alpm_log(handle, ALPM_LOG_DEBUG, "using cachedir: %s\n", cachedir); _alpm_log(handle, ALPM_LOG_WARNING, _("couldn't find or create package cache, using %s instead\n"), cachedir); -- 1.7.6.1