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_table->end_piece;
|
||||||
piece = piece->next)
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
bytes_written += piece->length;
|
bytes_written += length;
|
||||||
if (piece->eol())
|
if (((piece->next != piece_table->end_piece) && piece->eol()) ||
|
||||||
|
(m_eol_at_eof && bytes_written > 0u))
|
||||||
{
|
{
|
||||||
if (!file.write(LineEndings::spans[m_line_endings]))
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user