v2-0001-buffile-use-ssize_t-for-bytestowrite-in-BufFileDu.patch

application/octet-stream

Filename: v2-0001-buffile-use-ssize_t-for-bytestowrite-in-BufFileDu.patch
Type: application/octet-stream
Part: 0
Message: Re: Switch buffile.c/h to use pgoff_t
From c896554595c7615c94b01fc13cc6369272538043 Mon Sep 17 00:00:00 2001
From: "Chao Li (Evan)" <lic@highgo.com>
Date: Tue, 23 Dec 2025 10:44:27 +0800
Subject: [PATCH v2] buffile: use ssize_t for bytestowrite in BufFileDumpBuffer
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Avoid mixed-width arithmetic when computing the number of bytes to write
in BufFileDumpBuffer() by using ssize_t for bytestowrite.

This removes unnecessary casts, makes the comparison clearer, and keeps
file-offset arithmetic using PostgreSQL’s portable offset type.

Author: Chao Li <lic@highgo.com>
Discussion: https://postgr.es/m/aUStrqoOCDRFAq1M@paquier.xyz
---
 src/backend/storage/file/buffile.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/backend/storage/file/buffile.c b/src/backend/storage/file/buffile.c
index 85b316d879d..4e1f3667307 100644
--- a/src/backend/storage/file/buffile.c
+++ b/src/backend/storage/file/buffile.c
@@ -494,7 +494,7 @@ static void
 BufFileDumpBuffer(BufFile *file)
 {
 	int			wpos = 0;
-	int			bytestowrite;
+	ssize_t		bytestowrite;
 	File		thisfile;
 
 	/*
@@ -503,7 +503,7 @@ BufFileDumpBuffer(BufFile *file)
 	 */
 	while (wpos < file->nbytes)
 	{
-		pgoff_t		availbytes;
+		ssize_t		availbytes;
 		instr_time	io_start;
 		instr_time	io_time;
 
@@ -524,8 +524,8 @@ BufFileDumpBuffer(BufFile *file)
 		bytestowrite = file->nbytes - wpos;
 		availbytes = MAX_PHYSICAL_FILESIZE - file->curOffset;
 
-		if ((pgoff_t) bytestowrite > availbytes)
-			bytestowrite = (int) availbytes;
+		if (bytestowrite > availbytes)
+			bytestowrite = availbytes;
 
 		thisfile = file->files[file->curFile];
 
-- 
2.39.5 (Apple Git-154)