Blame ndbglue.diff

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