This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch dev-1.0.1
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git

commit 820d1c736b64f63187233906646de5e653b14c7e
Author: dataroaring <[email protected]>
AuthorDate: Thu Mar 31 13:50:25 2022 +0800

    [ubsan] fix some ubsan complains on vector and pointer (#8733)
---
 be/src/exprs/expr_context.cpp | 6 +-----
 be/src/exprs/expr_context.h   | 5 -----
 be/src/runtime/mem_pool.cpp   | 2 +-
 3 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/be/src/exprs/expr_context.cpp b/be/src/exprs/expr_context.cpp
index 40e93ee..36f15b3 100644
--- a/be/src/exprs/expr_context.cpp
+++ b/be/src/exprs/expr_context.cpp
@@ -35,8 +35,7 @@
 namespace doris {
 
 ExprContext::ExprContext(Expr* root)
-        : _fn_contexts_ptr(nullptr),
-          _root(root),
+        : _root(root),
           _is_clone(false),
           _prepared(false),
           _opened(false),
@@ -104,7 +103,6 @@ int ExprContext::register_func(RuntimeState* state,
                                int varargs_buffer_size) {
     _fn_contexts.push_back(FunctionContextImpl::create_context(
             state, _pool.get(), return_type, arg_types, varargs_buffer_size, 
false));
-    _fn_contexts_ptr = &_fn_contexts[0];
     return _fn_contexts.size() - 1;
 }
 
@@ -118,7 +116,6 @@ Status ExprContext::clone(RuntimeState* state, 
ExprContext** new_ctx) {
     for (int i = 0; i < _fn_contexts.size(); ++i) {
         
(*new_ctx)->_fn_contexts.push_back(_fn_contexts[i]->impl()->clone((*new_ctx)->_pool.get()));
     }
-    (*new_ctx)->_fn_contexts_ptr = &((*new_ctx)->_fn_contexts[0]);
 
     (*new_ctx)->_is_clone = true;
     (*new_ctx)->_prepared = true;
@@ -137,7 +134,6 @@ Status ExprContext::clone(RuntimeState* state, 
ExprContext** new_ctx, Expr* root
     for (int i = 0; i < _fn_contexts.size(); ++i) {
         
(*new_ctx)->_fn_contexts.push_back(_fn_contexts[i]->impl()->clone((*new_ctx)->_pool.get()));
     }
-    (*new_ctx)->_fn_contexts_ptr = &((*new_ctx)->_fn_contexts[0]);
 
     (*new_ctx)->_is_clone = true;
     (*new_ctx)->_prepared = true;
diff --git a/be/src/exprs/expr_context.h b/be/src/exprs/expr_context.h
index f176240..cced55d 100644
--- a/be/src/exprs/expr_context.h
+++ b/be/src/exprs/expr_context.h
@@ -165,11 +165,6 @@ private:
     /// and owned by this ExprContext.
     std::vector<FunctionContext*> _fn_contexts;
 
-    /// Array access to fn_contexts_. Used by ScalarFnCall's codegen'd compute 
function
-    /// to access the correct FunctionContext.
-    /// TODO: revisit this
-    FunctionContext** _fn_contexts_ptr;
-
     /// Pool backing fn_contexts_. Counts against the runtime state's UDF mem 
tracker.
     std::unique_ptr<MemPool> _pool;
 
diff --git a/be/src/runtime/mem_pool.cpp b/be/src/runtime/mem_pool.cpp
index bcaaa27..212b88e 100644
--- a/be/src/runtime/mem_pool.cpp
+++ b/be/src/runtime/mem_pool.cpp
@@ -178,7 +178,7 @@ void MemPool::acquire_data(MemPool* src, bool keep_current) 
{
     }
 
     // insert new chunks after current_chunk_idx_
-    auto insert_chunk = chunks_.begin() + current_chunk_idx_ + 1;
+    auto insert_chunk = chunks_.begin() + (current_chunk_idx_ + 1);
     chunks_.insert(insert_chunk, src->chunks_.begin(), end_chunk);
     src->chunks_.erase(src->chunks_.begin(), end_chunk);
     current_chunk_idx_ += num_acquired_chunks;

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to