aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvvvv <vvvv@ydb.tech>2022-12-06 22:08:18 +0300
committervvvv <vvvv@ydb.tech>2022-12-06 22:08:18 +0300
commit2371e6576af7479df9bb05c9db38aed02f61344a (patch)
tree6abc145295f16e51ce93360b26aa03b02f25002f
parent6c45decf776cb372ae1043bd5b104bdb2f7ddcd1 (diff)
downloadydb-2371e6576af7479df9bb05c9db38aed02f61344a.tar.gz
check malloc result
-rw-r--r--ydb/library/yql/minikql/aligned_page_pool.cpp7
-rw-r--r--ydb/library/yql/minikql/mkql_alloc.h8
2 files changed, 14 insertions, 1 deletions
diff --git a/ydb/library/yql/minikql/aligned_page_pool.cpp b/ydb/library/yql/minikql/aligned_page_pool.cpp
index e9e37d3979a..d5d83b368c9 100644
--- a/ydb/library/yql/minikql/aligned_page_pool.cpp
+++ b/ydb/library/yql/minikql/aligned_page_pool.cpp
@@ -266,7 +266,12 @@ void* TAlignedPagePool::GetBlock(size_t size) {
#ifdef PROFILE_MEMORY_ALLOCATIONS
OffloadAlloc(size);
- return malloc(size);
+ auto ret = malloc(size);
+ if (!ret) {
+ throw TMemoryLimitExceededException();
+ }
+
+ return ret;
#else
if (size == POOL_PAGE_SIZE) {
return GetPage();
diff --git a/ydb/library/yql/minikql/mkql_alloc.h b/ydb/library/yql/minikql/mkql_alloc.h
index 0e73c984a64..a1cdc735f4b 100644
--- a/ydb/library/yql/minikql/mkql_alloc.h
+++ b/ydb/library/yql/minikql/mkql_alloc.h
@@ -213,6 +213,10 @@ inline void* MKQLAllocFastDeprecated(size_t sz, TAllocState* state) {
#ifdef PROFILE_MEMORY_ALLOCATIONS
auto ret = (TAllocState::TListEntry*)malloc(sizeof(TAllocState::TListEntry) + sz);
+ if (!ret) {
+ throw TMemoryLimitExceededException();
+ }
+
ret->Link(&state->OffloadedBlocksRoot);
return ret + 1;
#endif
@@ -240,6 +244,10 @@ inline void* MKQLAllocFastWithSize(size_t sz, TAllocState* state) {
if (useMemalloc) {
state->OffloadAlloc(sizeof(TAllocState::TListEntry) + sz);
auto ret = (TAllocState::TListEntry*)malloc(sizeof(TAllocState::TListEntry) + sz);
+ if (!ret) {
+ throw TMemoryLimitExceededException();
+ }
+
ret->Link(&state->OffloadedBlocksRoot);
return ret + 1;
}