diff options
author | Alexey Ozeritskiy <[email protected]> | 2022-06-10 10:46:10 +0300 |
---|---|---|
committer | Alexey Ozeritskiy <[email protected]> | 2022-06-10 10:46:10 +0300 |
commit | 734e116396fe1d32ebdcbda55dbde607ac219720 (patch) | |
tree | 34521b9a53f6c799095322394206e11e04d5352b | |
parent | dba061dc19e315a24507dabb92821865b08548d7 (diff) |
Fix bad pointer dereference
ref:c35b850329a7c826a8a4a1a6770f4aad20940824
-rw-r--r-- | ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp | 4 | ||||
-rw-r--r-- | ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h | 15 |
2 files changed, 10 insertions, 9 deletions
diff --git a/ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp b/ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp index f7b37573b29..0eb36885ead 100644 --- a/ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp +++ b/ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp @@ -551,8 +551,8 @@ private: Checkpoints->AfterStateLoading(std::move(ev->Get()->Error)); } - NKikimr::NMiniKQL::TTypeEnvironment* TypeEnv; - NTaskRunnerActor::ITaskRunnerActor* TaskRunnerActor; + NKikimr::NMiniKQL::TTypeEnvironment* TypeEnv = nullptr; + NTaskRunnerActor::ITaskRunnerActor* TaskRunnerActor = nullptr; NActors::TActorId TaskRunnerActorId; NTaskRunnerActor::ITaskRunnerActorFactory::TPtr TaskRunnerActorFactory; diff --git a/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h b/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h index ac9f24912cb..f9c5c415e4e 100644 --- a/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h +++ b/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h @@ -474,15 +474,16 @@ protected: { // free MKQL memory then destroy TaskRunner and Allocator - auto guard = BindAllocator(); + if (auto guard = MaybeBindAllocator()) { #define CLEANUP(what) decltype(what) what##_; what.swap(what##_); - CLEANUP(InputChannelsMap); - CLEANUP(SourcesMap); - CLEANUP(InputTransformsMap); - CLEANUP(OutputChannelsMap); - CLEANUP(SinksMap); - CLEANUP(OutputTransformsMap); + CLEANUP(InputChannelsMap); + CLEANUP(SourcesMap); + CLEANUP(InputTransformsMap); + CLEANUP(OutputChannelsMap); + CLEANUP(SinksMap); + CLEANUP(OutputTransformsMap); #undef CLEANUP + } } this->PassAway(); |