summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Ozeritskiy <[email protected]>2022-06-10 10:46:10 +0300
committerAlexey Ozeritskiy <[email protected]>2022-06-10 10:46:10 +0300
commit734e116396fe1d32ebdcbda55dbde607ac219720 (patch)
tree34521b9a53f6c799095322394206e11e04d5352b
parentdba061dc19e315a24507dabb92821865b08548d7 (diff)
Fix bad pointer dereference
ref:c35b850329a7c826a8a4a1a6770f4aad20940824
-rw-r--r--ydb/library/yql/dq/actors/compute/dq_async_compute_actor.cpp4
-rw-r--r--ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h15
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();