On 2026-02-16 Mo 9:09 AM, Akshay Joshi wrote:
Hi Hackers,
I have encountered a bug in "*src/tools/pg_bsd_indent/lexi.c"* where
pgindent was incorrectly dropping the final line of a file if that
line did not end with a newline character (\n). This occurred because
the EOF logic triggered a termination of the processing loop before
the remaining buffer was flushed to the output.
*Steps to Reproduce:*
1. Create a *header/c* file with some content but no newline at the
very end.
2. Run pgindent on those files.
3. Check the file content. The file is now empty or missing the last
line.
This patch ensures that had_eof states do not bypass the final buffer
processing, preserving the integrity of the source code regardless of
trailing whitespace.
Yeah. I wonder if we shouldn't be just ensuring that there is a line
feed at the end of the buffer, i.e. add one if it's not there. We
shouldn't be adding files without a trailing LF, and ensuring there is
one seems like a reasonable thing to do in pg_bsd_indent.
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com