}
/*@=sizeoftype@*/
- dbi->dbi_byteswapped = 0; /* -1 unknown, 0 native order, 1 alien order */
+ dbi->dbi_byteswapped = -1; /* -1 unknown, 0 native order, 1 alien order */
if (!dbi->dbi_use_dbenv) { /* db3 dbenv is always used now. */
dbi->dbi_use_dbenv = 1;
/* Don't bother re-checking a previously read header. */
if (mi->mi_db->db_bits) {
- pbm_set * set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits,
- &mi->mi_db->db_nbits, mi->mi_offset);
- if (PBM_ISSET(mi->mi_offset, set))
+ pbm_set * set;
+union _dbswap mi_offset;
+
+memcpy(&mi_offset.ui, &mi->mi_offset, sizeof(mi_offset.ui));
+if (dbiByteSwapped(dbi) == 1)
+ _DBSWAP(mi_offset);
+ set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits,
+ &mi->mi_db->db_nbits, mi_offset.ui);
+ if (PBM_ISSET(mi_offset.ui, set))
rpmrc = RPMRC_OK;
}
/* Mark header checked. */
if (mi->mi_db && mi->mi_db->db_bits && rpmrc == RPMRC_OK) {
- pbm_set * set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits,
- &mi->mi_db->db_nbits, mi->mi_offset);
- PBM_SET(mi->mi_offset, set);
+ pbm_set * set;
+union _dbswap mi_offset;
+
+memcpy(&mi_offset.ui, &mi->mi_offset, sizeof(mi_offset.ui));
+if (dbiByteSwapped(dbi) == 1)
+ _DBSWAP(mi_offset);
+ set = PBM_REALLOC((pbm_set **)&mi->mi_db->db_bits,
+ &mi->mi_db->db_nbits, mi_offset.ui);
+ PBM_SET(mi_offset.ui, set);
}
/* Skip damaged and inconsistent headers. */