rpm/dbrointerruptable.diff

33 lines
905 B
Diff

--- lib/rpmdb.c.orig 2020-05-28 10:04:25.037136686 +0000
+++ lib/rpmdb.c 2020-09-30 12:23:50.708547165 +0000
@@ -387,9 +387,11 @@ int rpmdbClose(rpmdb db)
{
rpmdb * prev, next;
int rc = 0;
+ int dbmode;
if (db == NULL)
goto exit;
+ dbmode = db->db_mode;
prev = &rpmdbRock;
while ((next = *prev) != NULL && next != db)
@@ -423,7 +425,7 @@ int rpmdbClose(rpmdb db)
db = _free(db);
- if (rpmdbRock == NULL) {
+ if (rpmdbRock == NULL && (dbmode & (O_RDWR|O_WRONLY)) != 0) {
rpmsqActivate(0);
}
exit:
@@ -510,7 +512,7 @@ static int openDatabase(const char * pre
int justPkgs = (db->db_flags & RPMDB_FLAG_REBUILD) &&
((db->db_mode & O_ACCMODE) == O_RDONLY);
/* Enable signal queue on the first db open */
- if (db->db_next == NULL) {
+ if (db->db_next == NULL && (db->db_mode & (O_RDWR|O_WRONLY)) != 0) {
rpmsqActivate(1);
}