rpm/ndbglue.diff

40 lines
1.2 KiB
Diff

--- ./lib/backend/ndb/glue.c.orig 2021-01-05 15:36:03.097744355 +0000
+++ ./lib/backend/ndb/glue.c 2021-01-07 10:28:58.656228804 +0000
@@ -311,12 +311,13 @@ static void setdata(dbiCursor dbc, unsi
static rpmRC ndb_pkgdbPut(dbiIndex dbi, dbiCursor dbc, unsigned int *hdrNum, unsigned char *hdrBlob, unsigned int hdrLen)
{
+ struct ndbEnv_s *ndbenv = dbc->dbi->dbi_rpmdb->db_dbenv;
unsigned int hnum = *hdrNum;
int rc = RPMRC_OK;
if (hnum == 0) {
rc = rpmpkgNextPkgIdx(dbc->dbi->dbi_db, &hnum);
- if (!rc)
+ if (!rc && ndbenv->hdrNum == hnum)
setdata(dbc, hnum, 0, 0);
}
@@ -325,7 +326,8 @@ static rpmRC ndb_pkgdbPut(dbiIndex dbi,
if (!rc) {
dbc->hdrNum = hnum;
- setdata(dbc, hnum, 0, 0);
+ if (ndbenv->hdrNum == hnum)
+ setdata(dbc, hnum, 0, 0);
*hdrNum = hnum;
}
return rc;
@@ -333,8 +335,10 @@ static rpmRC ndb_pkgdbPut(dbiIndex dbi,
static rpmRC ndb_pkgdbDel(dbiIndex dbi, dbiCursor dbc, unsigned int hdrNum)
{
+ struct ndbEnv_s *ndbenv = dbc->dbi->dbi_rpmdb->db_dbenv;
dbc->hdrNum = 0;
- setdata(dbc, 0, 0, 0);
+ if (ndbenv->hdrNum == hdrNum)
+ setdata(dbc, 0, 0, 0);
return rpmpkgDel(dbc->dbi->dbi_db, hdrNum);
}