db/Configured: allocate ConfigBlock on the stack

This commit is contained in:
Max Kellermann 2015-12-18 09:17:12 +01:00
parent e6e7d6dbd6
commit 7562c5751c

View File

@ -43,16 +43,13 @@ CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener,
return nullptr;
}
ConfigBlock *allocated = nullptr;
if (param == nullptr && path != nullptr) {
allocated = new ConfigBlock(path->line);
allocated->AddBlockParam("path", path->value.c_str(),
path->line);
param = allocated;
}
if (param == nullptr) {
if (param != nullptr)
return DatabaseGlobalInit(loop, listener, *param, error);
else if (path != nullptr) {
ConfigBlock block(path->line);
block.AddBlockParam("path", path->value.c_str(), path->line);
return DatabaseGlobalInit(loop, listener, block, error);
} else {
/* if there is no override, use the cache directory */
const AllocatedPath cache_dir = GetUserCacheDir();
@ -65,13 +62,8 @@ CreateConfiguredDatabase(EventLoop &loop, DatabaseListener &listener,
if (db_file_utf8.empty())
return nullptr;
allocated = new ConfigBlock();
allocated->AddBlockParam("path", db_file_utf8.c_str(), -1);
param = allocated;
ConfigBlock block;
block.AddBlockParam("path", db_file_utf8.c_str(), -1);
return DatabaseGlobalInit(loop, listener, block, error);
}
Database *db = DatabaseGlobalInit(loop, listener, *param,
error);
delete allocated;
return db;
}