From b93f63b3ebab068efdcfa2ea3e19055bfc2e7f82 Mon Sep 17 00:00:00 2001 From: Jason Evans Date: Mon, 31 Oct 2016 16:32:33 -0700 Subject: [PATCH] Fix extent_rtree acquire() to release element on error. This resolves #480. --- src/extent.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/extent.c b/src/extent.c index e4ceb8fd..809777a1 100644 --- a/src/extent.c +++ b/src/extent.c @@ -229,8 +229,10 @@ extent_rtree_acquire(tsdn_t *tsdn, rtree_ctx_t *rtree_ctx, *r_elm_b = rtree_elm_acquire(tsdn, &extents_rtree, rtree_ctx, (uintptr_t)extent_last_get(extent), dependent, init_missing); - if (!dependent && *r_elm_b == NULL) + if (!dependent && *r_elm_b == NULL) { + rtree_elm_release(tsdn, &extents_rtree, *r_elm_a); return (true); + } assert(*r_elm_b != NULL); } else *r_elm_b = NULL;