diff options
Diffstat (limited to 'mandocdb.c')
-rw-r--r-- | mandocdb.c | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -575,7 +575,7 @@ index_merge(const struct of *of, struct mparse *mp, uint64_t mask; size_t sv; unsigned seq; - struct db_val vbuf; + uint64_t vbuf[2]; char type; rec = 0; @@ -714,7 +714,7 @@ index_merge(const struct of *of, struct mparse *mp, recs->last = 0; } else rec++; - vbuf.rec = htobe32(rec); + vbuf[1] = htobe64(rec); /* * Copy from the in-memory hashtable of pending @@ -726,8 +726,8 @@ index_merge(const struct of *of, struct mparse *mp, seq = R_NEXT; assert(sizeof(uint64_t) == val.size); memcpy(&mask, val.data, val.size); - vbuf.mask = htobe64(mask); - val.size = sizeof(struct db_val); + vbuf[0] = htobe64(mask); + val.size = sizeof(vbuf); val.data = &vbuf; dbt_put(mdb->db, mdb->dbn, &key, &val); } @@ -768,7 +768,7 @@ index_prune(const struct of *ofile, struct mdb *mdb, struct recs *recs) { const struct of *of; const char *fn; - struct db_val *vbuf; + uint64_t vbuf[2]; unsigned seq, sseq; DBT key, val; int ch; @@ -817,11 +817,11 @@ index_prune(const struct of *ofile, struct mdb *mdb, struct recs *recs) while (0 == (ch = (*mdb->db->seq)(mdb->db, &key, &val, sseq))) { sseq = R_NEXT; - if (sizeof(struct db_val) != val.size) + if (sizeof(vbuf) != val.size) break; - vbuf = val.data; - if (recs->last != betoh32(vbuf->rec)) + memcpy(vbuf, val.data, val.size); + if (recs->last != betoh64(vbuf[1])) continue; if ((ch = (*mdb->db->del)(mdb->db, |