| From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
|---|---|
| To: | Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: [PATCH] pgindent truncates last line of files missing a trailing newline |
| Date: | 2026-02-16 16:28:58 |
| Message-ID: | 3bd49b59-7a87-4ab6-9eac-59b5d9cb78de@dunslane.net |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2026-02-16 16:32:27 | Re: pgstat include expansion |
| Previous Message | Alvaro Herrera | 2026-02-16 16:19:51 | Re: pgstat include expansion |