diff mbox series

sign-compare: 32-bit support

Message ID xmqq4j3k3sph.fsf_-_@gitster.g (mailing list archive)
State New
Headers show
Series sign-compare: 32-bit support | expand

Commit Message

Junio C Hamano Dec. 4, 2024, 5:47 a.m. UTC
On 32-bit platforms, ssize_t may be "int" while size_t may be
"unsigned int".  At times we compare the number of bytes we read
stored in a ssize_t variable with "unsigned int", but that is done
after we check that we did not get an error return (which is
negative---and that is the whole reason why we used ssize_t and not
size_t), so these comparisons are safe.

But compilers may not realize that.  Cast these to size_t to work
around the false positives.  On platforms with size_t/ssize_t wider
than a normal int, this won't be an issue.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

 * These were needed to make linux32 CI job compile the
   -Wsign-compare topic cleanly.

 csum-file.c | 2 +-
 pkt-line.c  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/csum-file.c b/csum-file.c
index c203ebf11b..c8ec7b73e6 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -23,7 +23,7 @@  static void verify_buffer_or_die(struct hashfile *f,
 
 	if (ret < 0)
 		die_errno("%s: sha1 file read error", f->name);
-	if (ret != count)
+	if ((size_t)ret != (size_t)count)
 		die("%s: sha1 file truncated", f->name);
 	if (memcmp(buf, f->check_buffer, count))
 		die("sha1 file '%s' validation error", f->name);
diff --git a/pkt-line.c b/pkt-line.c
index 1c7e8d826d..a2bce206c2 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -360,7 +360,7 @@  static int get_packet_data(int fd, char **src_buf, size_t *src_size,
 	}
 
 	/* And complain if we didn't get enough bytes to satisfy the read. */
-	if (ret != size) {
+	if ((size_t)ret != (size_t)size) {
 		if (options & PACKET_READ_GENTLE_ON_EOF)
 			return -1;