summaryrefslogtreecommitdiff
path: root/test/regress_bufferevent.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/regress_bufferevent.c')
-rw-r--r--test/regress_bufferevent.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/test/regress_bufferevent.c b/test/regress_bufferevent.c
index 83cb804b..0775a523 100644
--- a/test/regress_bufferevent.c
+++ b/test/regress_bufferevent.c
@@ -254,10 +254,18 @@ static lock_wrapper *lu_find(void *lock_)
static void *trace_lock_alloc(unsigned locktype)
{
void *lock;
+ lock_wrapper *existing_lock;
+
+ lock = lu_base.cbs.alloc(locktype);
+ existing_lock = lu_find(lock);
+ if (existing_lock) {
+ existing_lock->status = ALLOC;
+ return lock;
+ }
+
++lu_base.nr_locks;
lu_base.locks = realloc(lu_base.locks,
sizeof(lock_wrapper) * lu_base.nr_locks);
- lock = lu_base.cbs.alloc(locktype);
lu_base.locks[lu_base.nr_locks - 1] = (lock_wrapper){ lock, ALLOC, 0 };
return lock;
}