summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason Evans <jasone@canonware.com>2016-10-31 23:32:33 (GMT)
committerJason Evans <jasone@canonware.com>2016-10-31 23:32:33 (GMT)
commitb93f63b3ebab068efdcfa2ea3e19055bfc2e7f82 (patch)
tree0ef432c4dba82672453af98661c686f9c9461360 /src
parent90b60eeae4f557fae99158f9899bd7b01a9ac662 (diff)
downloadjemalloc-b93f63b3ebab068efdcfa2ea3e19055bfc2e7f82.zip
jemalloc-b93f63b3ebab068efdcfa2ea3e19055bfc2e7f82.tar.gz
jemalloc-b93f63b3ebab068efdcfa2ea3e19055bfc2e7f82.tar.bz2
Fix extent_rtree acquire() to release element on error.
This resolves #480.
Diffstat (limited to 'src')
-rw-r--r--src/extent.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/extent.c b/src/extent.c
index e4ceb8f..809777a 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;