v1-0003-pg_locale.c-Clean-up-srclen-1.patch

text/x-patch

Filename: v1-0003-pg_locale.c-Clean-up-srclen-1.patch
Type: text/x-patch
Part: 2
Message: A few pg_locale.c fixes

Patch

Format: format-patch
Series: patch v1-0003
Subject: pg_locale.c: Clean up srclen == -1.
File+
src/backend/utils/adt/pg_locale_icu.c 1 0
src/backend/utils/adt/pg_locale_libc.c 1 0
From ec6a98973bfca4fd6be8538ec45119c286140082 Mon Sep 17 00:00:00 2001
From: Jeff Davis <jeff@j-davis.com>
Date: Tue, 27 Jan 2026 14:30:19 -0800
Subject: [PATCH v1 3/3] pg_locale.c: Clean up srclen == -1.

No callers currently specify -1, but the API should handle it
correctly to mean a NUL-termianted string.
---
 src/backend/utils/adt/pg_locale_icu.c  | 1 +
 src/backend/utils/adt/pg_locale_libc.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/backend/utils/adt/pg_locale_icu.c b/src/backend/utils/adt/pg_locale_icu.c
index 352b4c3885f..4659a50cbb8 100644
--- a/src/backend/utils/adt/pg_locale_icu.c
+++ b/src/backend/utils/adt/pg_locale_icu.c
@@ -703,6 +703,7 @@ downcase_ident_icu(char *dst, size_t dstsize, const char *src,
 
 	libc_lower = lt && (pg_database_encoding_max_length() == 1);
 
+	srclen = (srclen >= 0) ? srclen : strlen(src);
 	for (i = 0; i < srclen && i < dstsize; i++)
 	{
 		unsigned char ch = (unsigned char) src[i];
diff --git a/src/backend/utils/adt/pg_locale_libc.c b/src/backend/utils/adt/pg_locale_libc.c
index 78f6ea161a0..5feec161a43 100644
--- a/src/backend/utils/adt/pg_locale_libc.c
+++ b/src/backend/utils/adt/pg_locale_libc.c
@@ -329,6 +329,7 @@ downcase_ident_libc_sb(char *dst, size_t dstsize, const char *src,
 	locale_t	loc = locale->lt;
 	int			i;
 
+	srclen = (srclen >= 0) ? srclen : strlen(src);
 	for (i = 0; i < srclen && i < dstsize; i++)
 	{
 		unsigned char ch = (unsigned char) src[i];
-- 
2.43.0