Browse Source

Fix bad pointer dereference

ref:c35b850329a7c826a8a4a1a6770f4aad20940824
Alexey Ozeritskiy 2 years ago
parent
commit
734e116396

+ 2 - 2
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;
 

+ 8 - 7
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();