Re: [PATCH] pgindent truncates last line of files missing a trailing newline

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

In response to

Responses

Browse pgsql-hackers by date

  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