summaryrefslogtreecommitdiffstats
path: root/lib/libalpm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm')
-rw-r--r--lib/libalpm/remove.c2
-rw-r--r--lib/libalpm/trans.c19
2 files changed, 11 insertions, 10 deletions
diff --git a/lib/libalpm/remove.c b/lib/libalpm/remove.c
index cf416d52..2d840ceb 100644
--- a/lib/libalpm/remove.c
+++ b/lib/libalpm/remove.c
@@ -265,7 +265,7 @@ static void unlink_file(pmpkg_t *info, char *filename, alpm_list_t *skip_remove,
FREE(pkghash);
} else {
char *filehash = alpm_compute_md5sum(file);
- int cmp = strcmp(filehash,pkghash);
+ int cmp = filehash ? strcmp(filehash, pkghash) : 0;
FREE(filehash);
FREE(pkghash);
if(cmp != 0) {
diff --git a/lib/libalpm/trans.c b/lib/libalpm/trans.c
index 4e88668b..af1bccee 100644
--- a/lib/libalpm/trans.c
+++ b/lib/libalpm/trans.c
@@ -116,15 +116,6 @@ int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
}
}
- /* check database version */
- db_version = _alpm_db_version(handle->db_local);
- if(db_version < required_db_version) {
- _alpm_log(PM_LOG_ERROR,
- _("%s database version is too old\n"), handle->db_local->treename);
- remove_lock(handle);
- RET_ERR(PM_ERR_DB_VERSION, -1);
- }
-
trans = _alpm_trans_new();
if(trans == NULL) {
RET_ERR(PM_ERR_MEMORY, -1);
@@ -138,6 +129,16 @@ int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
handle->trans = trans;
+ /* check database version */
+ db_version = _alpm_db_version(handle->db_local);
+ if(db_version < required_db_version) {
+ _alpm_log(PM_LOG_ERROR,
+ _("%s database version is too old\n"), handle->db_local->treename);
+ remove_lock(handle);
+ _alpm_trans_free(trans);
+ RET_ERR(PM_ERR_DB_VERSION, -1);
+ }
+
return 0;
}