summaryrefslogtreecommitdiff
path: root/lib/tdb_compat/tdb_compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tdb_compat/tdb_compat.c')
-rw-r--r--lib/tdb_compat/tdb_compat.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/tdb_compat/tdb_compat.c b/lib/tdb_compat/tdb_compat.c
index fd3a68717a..9ed6604c4d 100644
--- a/lib/tdb_compat/tdb_compat.c
+++ b/lib/tdb_compat/tdb_compat.c
@@ -94,7 +94,7 @@ tdb_open_compat_(const char *name, int hash_size_unused,
void *data),
void *log_data)
{
- union tdb_attribute cif, log, *attr = NULL;
+ union tdb_attribute cif, log, hash, *attr = NULL;
if (log_fn) {
log.log.base.attr = TDB_ATTRIBUTE_LOG;
@@ -112,6 +112,16 @@ tdb_open_compat_(const char *name, int hash_size_unused,
tdb_flags &= ~TDB_CLEAR_IF_FIRST;
}
+ if (tdb_flags & TDB_INCOMPATIBLE_HASH) {
+ if (tdb_flags & TDB_VERSION1) {
+ hash.hash.base.attr = TDB_ATTRIBUTE_HASH;
+ hash.hash.base.next = attr;
+ hash.hash.fn = tdb1_incompatible_hash;
+ attr = &hash;
+ }
+ tdb_flags &= ~TDB_INCOMPATIBLE_HASH;
+ }
+
/* Testsuite uses this to speed things up. */
if (getenv("TDB_NO_FSYNC")) {
tdb_flags |= TDB_NOSYNC;