1
0
Fork 0

fix invalid new/free pairings

This commit is contained in:
jsteemann 2017-06-07 13:21:41 +02:00
parent f7b56e33c9
commit 6acfb4ff97
1 changed files with 3 additions and 9 deletions

View File

@ -1102,11 +1102,7 @@ static inline size_t CommonPrefixLength(std::string const& left,
TRI_fts_index_t* TRI_CreateFtsIndex(uint32_t handleChunkSize, TRI_fts_index_t* TRI_CreateFtsIndex(uint32_t handleChunkSize,
uint32_t nodeChunkSize, uint32_t nodeChunkSize,
uint32_t initialNodeHandles) { uint32_t initialNodeHandles) {
index__t* idx = new index__t(); auto idx = std::make_unique<index__t>();
if (idx == nullptr) {
return nullptr;
}
idx->_memoryAllocated = sizeof(index__t); idx->_memoryAllocated = sizeof(index__t);
#if TRI_FULLTEXT_DEBUG #if TRI_FULLTEXT_DEBUG
@ -1121,10 +1117,9 @@ TRI_fts_index_t* TRI_CreateFtsIndex(uint32_t handleChunkSize,
idx->_initialNodeHandles = initialNodeHandles; idx->_initialNodeHandles = initialNodeHandles;
// create the root node // create the root node
idx->_root = CreateNode(idx); idx->_root = CreateNode(idx.get());
if (idx->_root == nullptr) { if (idx->_root == nullptr) {
// out of memory // out of memory
TRI_Free(TRI_UNKNOWN_MEM_ZONE, idx);
return nullptr; return nullptr;
} }
@ -1133,7 +1128,6 @@ TRI_fts_index_t* TRI_CreateFtsIndex(uint32_t handleChunkSize,
if (idx->_handles == nullptr) { if (idx->_handles == nullptr) {
// out of memory // out of memory
TRI_Free(TRI_UNKNOWN_MEM_ZONE, idx->_root); TRI_Free(TRI_UNKNOWN_MEM_ZONE, idx->_root);
TRI_Free(TRI_UNKNOWN_MEM_ZONE, idx);
return nullptr; return nullptr;
} }
@ -1142,7 +1136,7 @@ TRI_fts_index_t* TRI_CreateFtsIndex(uint32_t handleChunkSize,
idx->_memoryBase += sizeof(TRI_fulltext_handles_t); idx->_memoryBase += sizeof(TRI_fulltext_handles_t);
#endif #endif
return (TRI_fts_index_t*)idx; return (TRI_fts_index_t*)idx.release();
} }
/// @brief free the fulltext index /// @brief free the fulltext index