diff options
author | a-romanov <a-romanov@yandex-team.ru> | 2022-02-23 02:26:22 +0300 |
---|---|---|
committer | a-romanov <a-romanov@yandex-team.ru> | 2022-02-23 02:26:22 +0300 |
commit | b53dc20574c93ec29e05b108678480d541938755 (patch) | |
tree | c668e012a11146555069a502bc2448ad1118cefc | |
parent | 484e5242edc66e9b30e0627f8692495a3d5a7113 (diff) | |
download | ydb-b53dc20574c93ec29e05b108678480d541938755.tar.gz |
YQL-14400 Try to fix UB.
ref:3237ad5d70fe4896f4cb110495cf2789bb58ab13
-rw-r--r-- | ydb/library/yql/minikql/computation/mkql_computation_node_holders.cpp | 4 |
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; |