Unverified Commit 1e901ed8 authored by Joseph Noir's avatar Joseph Noir Committed by GitHub

Merge pull request #895

Fix infinite recursion in read_ini
parents e96daa80 7d426e0b
......@@ -308,7 +308,8 @@ void read_ini(state<Iterator, Sentinel>& ps, Consumer&& consumer) {
transition(init, " \t\n")
fsm_epsilon(read_ini_comment(ps, consumer), init, ';')
transition(start_section, '[')
fsm_epsilon_if(tmp == "global", read_ini_section(ps, begin_section()), return_to_global)
fsm_epsilon_if(tmp == "global", read_ini_section(ps, begin_section()),
return_to_global, alnum)
}
// Read the section key after reading an '['.
state(start_section) {
......
......@@ -106,7 +106,7 @@ log_type make_log(Ts&&... xs) {
}
// Tests basic functionality.
const char* ini0 = R"(
const auto ini0 = R"(
[1group]
1value=321
[_foo]
......@@ -205,7 +205,7 @@ const auto ini0_log = make_log(
// clang-format on
// Tests nested parameters.
const char* ini1 = R"(
const auto ini1 = R"(
foo {
bar = {
value1 = 1
......@@ -242,6 +242,14 @@ const auto ini1_log = make_log(
);
// clang-format on
const auto ini2 = "#";
const auto ini2_log = make_log();
const auto ini3 = "; foobar\n!";
const auto ini3_log = make_log();
} // namespace <anonymous>
CAF_TEST_FIXTURE_SCOPE(read_ini_tests, fixture)
......@@ -264,4 +272,9 @@ CAF_TEST(section with valid key-value pairs) {
CAF_CHECK_EQUAL(parse(ini1), ini1_log);
}
CAF_TEST(invalid inis) {
CAF_CHECK_EQUAL(parse(ini2), ini2_log);
CAF_CHECK_EQUAL(parse(ini3), ini3_log);
}
CAF_TEST_FIXTURE_SCOPE_END()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment