diff options
author | vvvv <vvvv@ydb.tech> | 2022-12-06 22:08:18 +0300 |
---|---|---|
committer | vvvv <vvvv@ydb.tech> | 2022-12-06 22:08:18 +0300 |
commit | 2371e6576af7479df9bb05c9db38aed02f61344a (patch) | |
tree | 6abc145295f16e51ce93360b26aa03b02f25002f | |
parent | 6c45decf776cb372ae1043bd5b104bdb2f7ddcd1 (diff) | |
download | ydb-2371e6576af7479df9bb05c9db38aed02f61344a.tar.gz |
check malloc result
-rw-r--r-- | ydb/library/yql/minikql/aligned_page_pool.cpp | 7 | ||||
-rw-r--r-- | ydb/library/yql/minikql/mkql_alloc.h | 8 |
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; } |