diff --git a/src/util/io/reader.cpp b/src/util/io/reader.cpp index 56a4743a..b8b64d2d 100644 --- a/src/util/io/reader.cpp +++ b/src/util/io/reader.cpp @@ -91,6 +91,11 @@ void Reader::readLine() { key.clear(); return; } + if (key.empty() && input->Eof()) { + // end of file + indent = -1; + return; + } key = cannocial_name_form(trim(line.substr(indent, pos - indent))); value = pos == String::npos ? _("") : trim_left(line.substr(pos+1)); } @@ -112,7 +117,7 @@ template <> void Reader::handle(String& s) { bool first = true; // read all lines that are indented enough readLine(); - while (indent >= expected_indent) { + while (indent >= expected_indent && !input->Eof()) { if (!first) multi_line_str += _('\n'); first = false; multi_line_str += line.substr(expected_indent); // strip expected indent diff --git a/src/util/io/reader.hpp b/src/util/io/reader.hpp index 8ffd4cca..0ab124b1 100644 --- a/src/util/io/reader.hpp +++ b/src/util/io/reader.hpp @@ -114,6 +114,7 @@ class Reader { if (key == _("include_file")) { Reader reader(value); reader.handle(v); + moveNext(); } else { unknownKey(); }