aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authora-romanov <a-romanov@yandex-team.ru>2022-02-23 02:26:22 +0300
committera-romanov <a-romanov@yandex-team.ru>2022-02-23 02:26:22 +0300
commitb53dc20574c93ec29e05b108678480d541938755 (patch)
treec668e012a11146555069a502bc2448ad1118cefc
parent484e5242edc66e9b30e0627f8692495a3d5a7113 (diff)
downloadydb-b53dc20574c93ec29e05b108678480d541938755.tar.gz
YQL-14400 Try to fix UB.
ref:3237ad5d70fe4896f4cb110495cf2789bb58ab13
-rw-r--r--ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp b/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp
index 67a7cfb3028..b1fa85e4f63 100644
--- a/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp
+++ b/ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp
@@ -254,8 +254,8 @@ public:
void* operator new(size_t sz) = delete;
void* operator new[](size_t sz) = delete;
void operator delete(void *mem, std::size_t sz) {
- auto extraSize = ((TDirectArrayHolderInplace*)mem)->GetSize() * sizeof(NUdf::TUnboxedValue);
- MKQLFreeWithSize(mem, sz + extraSize);
+ const auto pSize = static_cast<void*>(static_cast<ui8*>(mem) + offsetof(TDirectArrayHolderInplace, Size));
+ MKQLFreeWithSize(mem, sz + *static_cast<ui32*>(pSize) * sizeof(NUdf::TUnboxedValue));
}
void operator delete[](void *mem, std::size_t sz) = delete;