From cdf0a016c3a49ecb5b126e5f65d6762f37a59632 Mon Sep 17 00:00:00 2001 From: airborne12 Date: Mon, 28 Mar 2022 10:17:13 +0800 Subject: [PATCH] [fix](vec) fix coredump for aggregate function when delete large_data, due to alloc-dealloc-mismatch (#8641) --- .../vec/aggregate_functions/aggregate_function_min_max.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/be/src/vec/aggregate_functions/aggregate_function_min_max.h b/be/src/vec/aggregate_functions/aggregate_function_min_max.h index 2b769e5ac4..26fd57eca3 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_min_max.h +++ b/be/src/vec/aggregate_functions/aggregate_function_min_max.h @@ -225,7 +225,7 @@ private: char small_data[MAX_SMALL_STRING_SIZE]; /// Including the terminating zero. public: - ~SingleValueDataString() { delete large_data; } + ~SingleValueDataString() { delete[] large_data; } bool has() const { return size >= 0; } @@ -242,7 +242,7 @@ public: if (size != -1) { size = -1; capacity = 0; - delete large_data; + delete[] large_data; large_data = nullptr; } } @@ -266,7 +266,7 @@ public: } else { if (capacity < rhs_size) { capacity = static_cast(round_up_to_power_of_two_or_zero(rhs_size)); - delete large_data; + delete[] large_data; large_data = new char[capacity]; } @@ -296,7 +296,7 @@ public: if (capacity < value_size) { /// Don't free large_data here. capacity = round_up_to_power_of_two_or_zero(value_size); - delete large_data; + delete[] large_data; large_data = new char[capacity]; }