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

Reply via email to