diff --git a/src/backend/helpers/yaml_set_helpers.h b/src/backend/helpers/yaml_set_helpers.h index de63209e..35a686b0 100644 --- a/src/backend/helpers/yaml_set_helpers.h +++ b/src/backend/helpers/yaml_set_helpers.h @@ -47,7 +47,8 @@ namespace YAML { rhs.clear(); for (const auto &element : node) { - rhs.insert(element.template as()); + if (!rhs.insert(element.template as()).second) + return false; } return true; } @@ -80,7 +81,8 @@ namespace YAML { rhs.clear(); for (const auto &element : node) { - rhs.insert(element.template as()); + if (!rhs.insert(element.template as()).second) + return false; } return true; } diff --git a/src/tests/backend/helpers/test_yaml_set_helpers.h b/src/tests/backend/helpers/test_yaml_set_helpers.h index b006b6a3..cfe70178 100644 --- a/src/tests/backend/helpers/test_yaml_set_helpers.h +++ b/src/tests/backend/helpers/test_yaml_set_helpers.h @@ -46,6 +46,9 @@ TEST(set, YamlDecode) { EXPECT_EQ(stringSet.begin(), stringSet.find("a")); EXPECT_EQ(++stringSet.begin(), stringSet.find("b")); EXPECT_EQ(--stringSet.end(), stringSet.find("c")); + + node = YAML::Load("[a, b, c, c]"); + EXPECT_ANY_THROW(node.as>()); } TEST(set, YamlEmitter) { @@ -82,6 +85,9 @@ TEST(unordered_set, YAMLDecode) { EXPECT_EQ(1, stringSet.count("a")); EXPECT_EQ(1, stringSet.count("b")); EXPECT_EQ(1, stringSet.count("c")); + + node = YAML::Load("[a, b, c, c]"); + EXPECT_ANY_THROW(node.as>()); } bool sequenceOf(const char val1,