diff options
author | vvvv <vvvv@ydb.tech> | 2022-08-16 22:44:13 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2022-08-16 22:44:13 +0300 |
commit | a700b8e29dadd7b8cee6b598ce3b6739428f9187 (patch) | |
tree | 423698b0ae76c75b33c9f258f4b35c173a3e037c | |
parent | c31467766a7921632559c362374ef2c7cd09f84c (diff) | |
download | ydb-a700b8e29dadd7b8cee6b598ce3b6739428f9187.tar.gz |
don't use Y_DEFER inside PG_TRY
-rw-r--r-- | ydb/library/yql/parser/pg_wrapper/comp_factory.cpp | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp index f79300954c..214f39509b 100644 --- a/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp +++ b/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp @@ -935,7 +935,7 @@ private: void* freeMem = nullptr; void* freeMem2 = nullptr; - Y_DEFER{ + Y_DEFER { if (freeMem) { pfree(freeMem); } @@ -1640,6 +1640,13 @@ TString PgValueToNativeText(const NUdf::TUnboxedValuePod& value, ui32 pgTypeId) outFuncId = NPg::LookupProc("array_out", { 0 }).ProcId; } + char* str = nullptr; + Y_DEFER { + if (str) { + pfree(str); + } + }; + PG_TRY(); { FmgrInfo finfo; @@ -1658,11 +1665,8 @@ TString PgValueToNativeText(const NUdf::TUnboxedValuePod& value, ui32 pgTypeId) callInfo->args[0] = { typeInfo.PassByValue ? ScalarDatumFromPod(value) : PointerDatumFromPod(value), false }; - auto str = (char*)finfo.fn_addr(callInfo); + str = (char*)finfo.fn_addr(callInfo); Y_ENSURE(!callInfo->isnull); - Y_DEFER{ - pfree(str); - }; return TString(str); } @@ -1684,7 +1688,7 @@ void PgValueToNativeBinaryImpl(const NUdf::TUnboxedValuePod& value, ui32 pgTypeI const bool oldNeedCanonizeFp = NeedCanonizeFp; NeedCanonizeFp = needCanonizeFp; - Y_DEFER{ + Y_DEFER { NeedCanonizeFp = oldNeedCanonizeFp; }; @@ -1695,6 +1699,13 @@ void PgValueToNativeBinaryImpl(const NUdf::TUnboxedValuePod& value, ui32 pgTypeI sendFuncId = NPg::LookupProc("array_send", { 0 }).ProcId; } + text* x = nullptr; + Y_DEFER { + if (x) { + pfree(x); + } + }; + PG_TRY(); { FmgrInfo finfo; @@ -1714,11 +1725,8 @@ void PgValueToNativeBinaryImpl(const NUdf::TUnboxedValuePod& value, ui32 pgTypeI ScalarDatumFromPod(value) : PointerDatumFromPod(value), false }; - auto x = (text*)finfo.fn_addr(callInfo); + x = (text*)finfo.fn_addr(callInfo); Y_ENSURE(!callInfo->isnull); - Y_DEFER{ - pfree(x); - }; auto s = GetVarBuf(x); ui32 len = s.Size(); |