diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c
index 64ef4952aa2941698be8ff973de32e76f088d092..4b5f366b85a283582525f8db541026d1221512ae 100644
--- a/servers/slapd/back-bdb/init.c
+++ b/servers/slapd/back-bdb/init.c
@@ -186,6 +186,10 @@ bdb_db_open( BackendDB *be )
 		be->be_suffix[0].bv_val, 0, 0 );
 #endif
 
+	db_env_set_func_free( ber_memfree );
+	db_env_set_func_malloc( ber_memalloc );
+	db_env_set_func_realloc( ber_memrealloc );
+
 	/* we should check existance of dbenv_home and db_directory */
 
 	rc = db_env_create( &bdb->bi_dbenv, 0 );
@@ -202,9 +206,6 @@ bdb_db_open( BackendDB *be )
 		return rc;
 	}
 
-	bdb->bi_dbenv->set_alloc( bdb->bi_dbenv, (db_malloc *)ber_memalloc,
-		(db_realloc *)ber_memrealloc, ber_memfree );
-
 	flags = DB_INIT_MPOOL | DB_THREAD | DB_CREATE
 		| DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN;