mirror of https://gitee.com/bigwinds/arangodb
removed some TODO markers by handling some out of memory situations
This commit is contained in:
parent
9301fce3bd
commit
3d53f45d57
|
@ -508,15 +508,38 @@ TRI_collection_t* TRI_CreateCollection (TRI_vocbase_t* vocbase,
|
||||||
// blob collection use the name
|
// blob collection use the name
|
||||||
if (parameter->_type == TRI_COL_TYPE_BLOB) {
|
if (parameter->_type == TRI_COL_TYPE_BLOB) {
|
||||||
filename = TRI_Concatenate2File(path, parameter->_name);
|
filename = TRI_Concatenate2File(path, parameter->_name);
|
||||||
/* TODO FIXME: memory allocation might fail */
|
if (filename == NULL) {
|
||||||
|
|
||||||
|
LOG_ERROR("cannot create collection '%s', out of memory", path);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// simple collection use the collection identifier
|
// simple collection use the collection identifier
|
||||||
else if (parameter->_type == TRI_COL_TYPE_SIMPLE_DOCUMENT) {
|
else if (parameter->_type == TRI_COL_TYPE_SIMPLE_DOCUMENT) {
|
||||||
tmp1 = TRI_StringUInt64(parameter->_cid);
|
tmp1 = TRI_StringUInt64(parameter->_cid);
|
||||||
|
if (tmp1 == NULL) {
|
||||||
|
LOG_ERROR("cannot create collection '%s', out of memory", path);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
tmp2 = TRI_Concatenate2String("collection-", tmp1);
|
tmp2 = TRI_Concatenate2String("collection-", tmp1);
|
||||||
|
if (tmp2 == NULL) {
|
||||||
|
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp1);
|
||||||
|
LOG_ERROR("cannot create collection '%s', out of memory", path);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
filename = TRI_Concatenate2File(path, tmp2);
|
filename = TRI_Concatenate2File(path, tmp2);
|
||||||
|
if (filename == NULL) {
|
||||||
|
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp1);
|
||||||
|
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp2);
|
||||||
|
LOG_ERROR("cannot create collection '%s', out of memory", path);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp2);
|
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp2);
|
||||||
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp1);
|
TRI_FreeString(TRI_CORE_MEM_ZONE, tmp1);
|
||||||
|
@ -573,7 +596,13 @@ TRI_collection_t* TRI_CreateCollection (TRI_vocbase_t* vocbase,
|
||||||
// create collection structure
|
// create collection structure
|
||||||
if (collection == NULL) {
|
if (collection == NULL) {
|
||||||
collection = TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_collection_t), false);
|
collection = TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_collection_t), false);
|
||||||
/* TODO FIXME: memory allocation might fail */
|
if (collection == NULL) {
|
||||||
|
TRI_FreeString(TRI_CORE_MEM_ZONE, filename);
|
||||||
|
|
||||||
|
LOG_ERROR("cannot create collection '%s', out of memory", path);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
InitCollection(vocbase, collection, filename, parameter);
|
InitCollection(vocbase, collection, filename, parameter);
|
||||||
|
@ -640,7 +669,11 @@ int TRI_LoadParameterInfoCollection (char const* path, TRI_col_info_t* parameter
|
||||||
|
|
||||||
// find parameter file
|
// find parameter file
|
||||||
filename = TRI_Concatenate2File(path, TRI_COL_PARAMETER_FILE);
|
filename = TRI_Concatenate2File(path, TRI_COL_PARAMETER_FILE);
|
||||||
// TODO: memory allocation might fail
|
if (filename == NULL) {
|
||||||
|
LOG_ERROR("cannot load parameter info for collection '%s', out of memory", path);
|
||||||
|
|
||||||
|
return TRI_set_errno(TRI_ERROR_OUT_OF_MEMORY);
|
||||||
|
}
|
||||||
|
|
||||||
if (! TRI_ExistsFile(filename)) {
|
if (! TRI_ExistsFile(filename)) {
|
||||||
TRI_FreeString(TRI_CORE_MEM_ZONE, filename);
|
TRI_FreeString(TRI_CORE_MEM_ZONE, filename);
|
||||||
|
@ -981,7 +1014,13 @@ TRI_collection_t* TRI_OpenCollection (TRI_vocbase_t* vocbase,
|
||||||
// create collection
|
// create collection
|
||||||
if (collection == NULL) {
|
if (collection == NULL) {
|
||||||
collection = TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_collection_t), false);
|
collection = TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, sizeof(TRI_collection_t), false);
|
||||||
/* TODO FIXME: memory allocation might fail */
|
|
||||||
|
if (collection == NULL) {
|
||||||
|
LOG_ERROR("cannot open '%s', out of memory", path);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
freeCol = true;
|
freeCol = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue