diff --git a/include/ss/parser.hpp b/include/ss/parser.hpp index 1485324..a9b18b3 100644 --- a/include/ss/parser.hpp +++ b/include/ss/parser.hpp @@ -37,6 +37,10 @@ public: : file_name_{file_name}, reader_{file_name_, delim} { if (reader_.file_) { read_line(); + if (eof_) { + set_error_eof_reached(); + return; + } if constexpr (ignore_header) { ignore_next(); } else { diff --git a/include/ss/splitter.hpp b/include/ss/splitter.hpp index 80146d4..87e1ac0 100644 --- a/include/ss/splitter.hpp +++ b/include/ss/splitter.hpp @@ -78,11 +78,10 @@ private: const std::string& delimiter = default_delimiter) { // resplitting, continue from last slice - if constexpr (!quote::enabled || !multiline::enabled) { - if (split_data_.empty() || !unterminated_quote()) { - set_error_invalid_resplit(); - return split_data_; - } + if (!quote::enabled || !multiline::enabled || split_data_.empty() || + !unterminated_quote()) { + set_error_invalid_resplit(); + return split_data_; } const auto [old_line, old_begin] = *std::prev(split_data_.end()); @@ -90,7 +89,6 @@ private: // safety measure if (new_size != -1 && static_cast(new_size) < begin) { - unterminated_quote_ = false; set_error_invalid_resplit(); return split_data_; } diff --git a/test/test_splitter.cpp b/test/test_splitter.cpp index 44230f1..87441a3 100644 --- a/test/test_splitter.cpp +++ b/test/test_splitter.cpp @@ -1099,7 +1099,6 @@ TEST_CASE("splitter test invalid splits") { char new_line[] = "some"; c.resplit(new_line, strlen(new_line)); CHECK_FALSE(s.valid()); - CHECK_FALSE(s.unterminated_quote()); CHECK_FALSE(s.error_msg().empty()); } @@ -1132,7 +1131,6 @@ TEST_CASE("splitter test invalid splits with exceptions") { // invalid resplit char new_line[] = "some"; REQUIRE_EXCEPTION(c.resplit(new_line, strlen(new_line))); - CHECK_FALSE(s.unterminated_quote()); } TEST_CASE("splitter test with trim_left") {