From 54885402b0219d70d118b6177ec14c35388dfe92 Mon Sep 17 00:00:00 2001 From: obdev Date: Thu, 3 Nov 2022 02:11:34 +0000 Subject: [PATCH] [CP] Repair memory leak in sort operator about stored_rows_. --- src/sql/engine/sort/ob_sort_op_impl.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sql/engine/sort/ob_sort_op_impl.cpp b/src/sql/engine/sort/ob_sort_op_impl.cpp index 8c2e421d3b..c276256976 100644 --- a/src/sql/engine/sort/ob_sort_op_impl.cpp +++ b/src/sql/engine/sort/ob_sort_op_impl.cpp @@ -617,8 +617,8 @@ int ObSortOpImpl::init( default_block_size))) { LOG_WARN("init row store failed", K(ret)); } else if (batch_size > 0 - && NULL == (stored_rows_ = static_cast( - mem_context_->get_arena_allocator().alloc( + && OB_ISNULL(stored_rows_ = static_cast( + mem_context_->get_malloc_allocator().alloc( sizeof(*stored_rows_) * batch_size)))) { ret = OB_ALLOCATE_MEMORY_FAILED; LOG_WARN("allocate memory failed", K(ret)); @@ -699,6 +699,10 @@ void ObSortOpImpl::reset() mem_context_->get_malloc_allocator().free(ems_heap_); ems_heap_ = NULL; } + if (NULL != stored_rows_) { + mem_context_->get_malloc_allocator().free(stored_rows_); + stored_rows_ = NULL; + } if (NULL != buckets_) { mem_context_->get_malloc_allocator().free(buckets_); buckets_ = NULL; -- GitLab