From dab2a7db7bc3b173956fb751f5a9c6378259fec9 Mon Sep 17 00:00:00 2001 From: hanr881 <1741282579@qq.com> Date: Thu, 2 Jan 2025 15:15:42 +0000 Subject: [PATCH] [CP] to issue<2024121300106459296>:fix two memory leak --- src/pl/ob_pl_code_generator.cpp | 2 +- src/pl/ob_pl_type.cpp | 5 ++++- src/sql/ob_spi.cpp | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pl/ob_pl_code_generator.cpp b/src/pl/ob_pl_code_generator.cpp index fabfc76df..2d912132b 100644 --- a/src/pl/ob_pl_code_generator.cpp +++ b/src/pl/ob_pl_code_generator.cpp @@ -2774,7 +2774,6 @@ int ObPLCodeGenerateVisitor::visit(const ObPLCallStmt &s) OZ (generator_.get_llvm_type(*pl_type, ir_type)); OZ (ir_type.get_pointer_to(ir_ptr_type)); OZ (generator_.get_helper().create_int_to_ptr(ObString("cast_extend_to_ptr"), extend_value, ir_ptr_type, value)); - OZ (pl_type->generate_construct(generator_, *s.get_namespace(), value, allocator, true, &s)); if (OB_SUCC(ret) && pl_type->is_collection_type()) { const ObUserDefinedType *user_type = NULL; @@ -2807,6 +2806,7 @@ int ObPLCodeGenerateVisitor::visit(const ObPLCallStmt &s) var_addr)); OZ (generator_.extract_obobj_ptr_from_objparam(p_result_obj, p_dest_value)); OZ (generator_.generate_set_extend(p_dest_value, var_type, init_value, var_addr)); + OZ (pl_type->generate_construct(generator_, *s.get_namespace(), value, allocator, true, &s)); } } } else { diff --git a/src/pl/ob_pl_type.cpp b/src/pl/ob_pl_type.cpp index ea33a6764..2ded19411 100644 --- a/src/pl/ob_pl_type.cpp +++ b/src/pl/ob_pl_type.cpp @@ -2277,7 +2277,10 @@ int ObPLCursorInfo::deep_copy(ObPLCursorInfo &src, common::ObIAllocator *allocat LOG_WARN("failed to copy pl extend", K(ret)); } else { obj = tmp; - dest_cursor->complex_objs_.push_back(tmp); + if (OB_FAIL(dest_cursor->complex_objs_.push_back(tmp))) { + int tmp_ret = ObUserDefinedType::destruct_obj(tmp, dest_cursor->session_info_); + LOG_WARN("fail to push back", K(ret), K(tmp_ret)); + } } } } diff --git a/src/sql/ob_spi.cpp b/src/sql/ob_spi.cpp index ccd2adc99..f428d7319 100644 --- a/src/sql/ob_spi.cpp +++ b/src/sql/ob_spi.cpp @@ -8399,7 +8399,10 @@ int ObSPIService::fill_cursor(ObResultSet &result_set, LOG_WARN("failed to copy pl extend", K(ret)); } else { obj = tmp; - cursor->complex_objs_.push_back(tmp); + if (OB_FAIL(cursor->complex_objs_.push_back(tmp))) { + int tmp_ret = ObUserDefinedType::destruct_obj(tmp, cursor->session_info_); + LOG_WARN("fail to push back", K(ret), K(tmp_ret)); + } } } }