There are several cases where the newline character in the object is not being properly treated as an error and returned.
if (F_status_is_error(status)) break;
if (status == F_true) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+
width = macro_f_utf_byte_width(object.string[range->start]);
status = f_string_dynamic_increase_by(width, destination);
if (F_status_is_error(status)) break;
if (status == F_true) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+
width = macro_f_utf_byte_width(object.string[range->start]);
status = f_string_dynamic_increase_by(width, destination);
status = f_fss_is_space(state, object, *range);
if (F_status_is_error(status)) break;
- ends_on_space = status == F_true;
+ if (ends_on_space = (status == F_true)) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+ }
width = macro_f_utf_byte_width(object.string[range->start]);
if (F_status_is_error(status)) break;
if (status == F_true) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+
width = macro_f_utf_byte_width(object.string[range->start]);
status = f_string_dynamic_increase_by(width, destination);
status = f_fss_is_space(state, object, *range);
if (F_status_is_error(status)) break;
- ends_on_space = status == F_true;
+ if (ends_on_space = (status == F_true)) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+ }
width = macro_f_utf_byte_width(object.string[range->start]);
return F_data_not_stop;
}
+ if (status == F_none_eol) {
+ return F_status_set_error(F_none_eol);
+ }
+
// Ensure that there is room for the potential start and stop quotes, a potential delimit at start, and the potential object open character.
status = f_string_dynamic_increase_by(5, destination);
if (F_status_is_error(status)) return status;
if (F_status_is_error(status)) break;
if (status == F_true) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+
quoted_is = F_true;
status = f_string_dynamic_increase_by(item_total, destination);
if (F_status_is_error(status)) break;
if (status == F_true) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+
quoted_is = F_true;
}
if (F_status_is_error(status)) break;
if (status == F_true) {
+ if (object.string[range->start] == f_fss_eol_s.string[0]) {
+ status = F_status_set_error(F_none_eol);
+
+ break;
+ }
+
if (item_first != input_start) {
status = f_string_dynamic_increase(state.step_large, destination);
if (F_status_is_error(status)) break;
return status;
}
- if (status == F_false) {
+ if (status == F_true) {
+ if (object.string[i] == f_fss_eol_s.string[0]) {
+ destination->used = used_start;
+
+ return F_status_set_error(F_none_eol);
+ }
+ }
+ else {
destination->string[used_start + 1] = f_fss_delimit_placeholder_s.string[0];
}
}