--- lbbs/src/editor.c 2025/06/13 11:20:24 1.18 +++ lbbs/src/editor.c 2025/06/13 15:50:21 1.20 @@ -126,6 +126,15 @@ EDITOR_DATA *editor_data_load(const char memcpy(p_editor_data->p_display_lines[i], p_data + line_offsets[i], (size_t)p_editor_data->display_line_lengths[i]); current_data_line_length += p_editor_data->display_line_lengths[i]; + + // Trim \n from last line + if (i + 1 == p_editor_data->display_line_total && + p_editor_data->display_line_lengths[i] > 0 && + p_editor_data->p_display_lines[i][p_editor_data->display_line_lengths[i] - 1] == '\n') + { + p_editor_data->display_line_lengths[i]--; + current_data_line_length--; + } p_data_line[current_data_line_length] = '\0'; } @@ -400,6 +409,13 @@ int editor_data_insert(EDITOR_DATA *p_ed *p_offset -= p_editor_data->display_line_lengths[*p_display_line]; (*p_display_line)++; } + else if (*p_display_line + 1 >= MAX_EDITOR_DATA_LINES) + { + len = split_line(p_editor_data->p_display_lines[*p_display_line], SCREEN_COLS - 1, &eol, &display_len); + p_editor_data->p_display_lines[*p_display_line][len] = '\0'; + p_editor_data->display_line_lengths[*p_display_line] = len; + *p_offset = len; + } } return 0;