fix Buffer::write_to_file() to preserve EOLs correctly
This commit is contained in:
parent
1f59e4d042
commit
ef717faa16
@ -85,12 +85,18 @@ bool Buffer::write_to_file(const char * filename)
|
||||
piece != piece_table->end_piece;
|
||||
piece = piece->next)
|
||||
{
|
||||
if (!file.write(piece->start, piece->length))
|
||||
uint32_t length = piece->length;
|
||||
if (piece->eol())
|
||||
{
|
||||
length--;
|
||||
}
|
||||
if (!file.write(piece->start, length))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
bytes_written += piece->length;
|
||||
if (piece->eol())
|
||||
bytes_written += length;
|
||||
if (((piece->next != piece_table->end_piece) && piece->eol()) ||
|
||||
(m_eol_at_eof && bytes_written > 0u))
|
||||
{
|
||||
if (!file.write(LineEndings::spans[m_line_endings]))
|
||||
{
|
||||
@ -100,14 +106,6 @@ bool Buffer::write_to_file(const char * filename)
|
||||
}
|
||||
}
|
||||
|
||||
if (m_eol_at_eof && bytes_written > 0u)
|
||||
{
|
||||
if (!file.write(LineEndings::spans[m_line_endings]))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user