Simplified lifetime management of tests

- Addresses Sonarcloud issues:
  - Rewrite the code so that you no longer need this "delete".
  - Make the type of this variable a reference-to-const.
This commit is contained in:
Eduardo Arias
2024-09-10 14:32:38 -03:00
parent b7b2d9a40d
commit 75d31a4d1e
4 changed files with 13 additions and 34 deletions

View File

@@ -72,18 +72,11 @@ bool ModSecurityTest<T>::load_test_json(const std::string &file) {
for ( int i = 0; i < num_tests; i++ ) {
yajl_val obj = node->u.array.values[i];
T *u = T::from_yajl_node(obj);
auto u = std::unique_ptr<T>(T::from_yajl_node(obj));
u->filename = file;
if (this->count(u->filename + ":" + u->name) == 0) {
auto vec = new std::vector<T *>;
vec->push_back(u);
std::string filename(u->filename + ":" + u->name);
this->insert({filename, vec});
} else {
auto vec = this->at(u->filename + ":" + u->name);
vec->push_back(u);
}
const auto key = u->filename + ":" + u->name;
(*this)[key].push_back(std::move(u));
}
yajl_tree_free(node);

View File

@@ -29,7 +29,7 @@ extern std::string default_test_path;
namespace modsecurity_test {
template <class T> class ModSecurityTest :
public std::unordered_map<std::string, std::vector<T *> *> {
public std::unordered_map<std::string, std::vector<std::unique_ptr<T>>> {
public:
ModSecurityTest()
: m_test_number(0),