Fix bug where the parsing of data containing escaped new lines within quotes would produce bad outputs

This commit is contained in:
ado 2023-07-31 21:49:01 +02:00
parent f58091cf02
commit 27ef7f2e21
2 changed files with 4 additions and 6 deletions

View File

@ -600,6 +600,8 @@ private:
if constexpr (quoted_multiline_enabled) { if constexpr (quoted_multiline_enabled) {
while (unterminated_quote()) { while (unterminated_quote()) {
size -= next_line_converter_.size_shifted();
if (multiline_limit_reached(limit)) { if (multiline_limit_reached(limit)) {
return true; return true;
} }
@ -665,9 +667,6 @@ private:
} }
void undo_remove_eol(char* buffer, size_t& string_end) { void undo_remove_eol(char* buffer, size_t& string_end) {
if (next_line_converter_.unterminated_quote()) {
string_end -= next_line_converter_.size_shifted();
}
if (crlf_) { if (crlf_) {
std::copy_n("\r\n\0", 3, buffer + string_end); std::copy_n("\r\n\0", 3, buffer + string_end);
string_end += 2; string_end += 2;

View File

@ -2792,6 +2792,8 @@ private:
if constexpr (quoted_multiline_enabled) { if constexpr (quoted_multiline_enabled) {
while (unterminated_quote()) { while (unterminated_quote()) {
size -= next_line_converter_.size_shifted();
if (multiline_limit_reached(limit)) { if (multiline_limit_reached(limit)) {
return true; return true;
} }
@ -2857,9 +2859,6 @@ private:
} }
void undo_remove_eol(char* buffer, size_t& string_end) { void undo_remove_eol(char* buffer, size_t& string_end) {
if (next_line_converter_.unterminated_quote()) {
string_end -= next_line_converter_.size_shifted();
}
if (crlf_) { if (crlf_) {
std::copy_n("\r\n\0", 3, buffer + string_end); std::copy_n("\r\n\0", 3, buffer + string_end);
string_end += 2; string_end += 2;