summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/tdb/common/transaction.c1
-rw-r--r--lib/util/idtree.c8
2 files changed, 6 insertions, 3 deletions
diff --git a/lib/tdb/common/transaction.c b/lib/tdb/common/transaction.c
index 1cb7063a38..cb723ed134 100644
--- a/lib/tdb/common/transaction.c
+++ b/lib/tdb/common/transaction.c
@@ -864,7 +864,6 @@ static int transaction_setup_recovery(struct tdb_context *tdb,
int tdb_transaction_prepare_commit(struct tdb_context *tdb)
{
const struct tdb_methods *methods;
- int i;
if (tdb->transaction == NULL) {
TDB_LOG((tdb, TDB_DEBUG_ERROR, "tdb_transaction_prepare_commit: no transaction\n"));
diff --git a/lib/util/idtree.c b/lib/util/idtree.c
index c8a8b6346a..0af93a229d 100644
--- a/lib/util/idtree.c
+++ b/lib/util/idtree.c
@@ -372,12 +372,16 @@ _PUBLIC_ int idr_get_new_random(struct idr_context *idp, void *ptr, int limit)
/* first try a random starting point in the whole range, and if that fails,
then start randomly in the bottom half of the range. This can only
- fail if the range is over half full */
+ fail if the range is over half full, and finally fallback to any
+ free id */
id = idr_get_new_above(idp, ptr, 1+(generate_random() % limit), limit);
if (id == -1) {
id = idr_get_new_above(idp, ptr, 1+(generate_random()%(limit/2)), limit);
}
-
+ if (id == -1) {
+ id = idr_get_new_above(idp, ptr, 1, limit);
+ }
+
return id;
}