Commit 36131d16 authored by Dominik Charousset's avatar Dominik Charousset

Fix infinite recursion in read_ini

Close #894.
parent e96daa80
......@@ -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) {
......
......@@ -242,6 +242,14 @@ const auto ini1_log = make_log(
);
// clang-format on
const char* ini2 = "#";
const auto ini2_log = make_log();
const char* 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