From 3dabc8c4ccc9b4b0d6dbe8f87353f511d6862bb4 Mon Sep 17 00:00:00 2001
From: Jeff Davis <jeff@j-davis.com>
Date: Thu, 13 Aug 2026 20:57:20 -0700
Subject: [PATCH vPG18 1/4] Fixup 5f003855e7 for srclen < 0.

No actual problem because no callers used that aspect of the API.

Only commit to 18, because that part of the API was removed in commit
6d22c67c3b.

Discussion: https://postgr.es/m/v36ssaygf7grb3qzfsjhtdzi7kqd45ds56nyuf7gi5qjml4qbb@ezmfqzmhlrs2
---
 src/backend/utils/adt/pg_locale.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 2f8d5fea8f2..9c721efb52f 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -1328,6 +1328,8 @@ size_t
 pg_strlower(char *dst, size_t dstsize, const char *src, ssize_t srclen,
 			pg_locale_t locale)
 {
+	srclen = (srclen < 0) ? strlen(src) : srclen;
+
 	if (locale->ctype_is_c)
 		return strlower_c(dst, dstsize, src, srclen);
 	else if (locale->provider == COLLPROVIDER_BUILTIN)
@@ -1349,6 +1351,8 @@ size_t
 pg_strtitle(char *dst, size_t dstsize, const char *src, ssize_t srclen,
 			pg_locale_t locale)
 {
+	srclen = (srclen < 0) ? strlen(src) : srclen;
+
 	if (locale->ctype_is_c)
 		return strtitle_c(dst, dstsize, src, srclen);
 	else if (locale->provider == COLLPROVIDER_BUILTIN)
@@ -1370,6 +1374,8 @@ size_t
 pg_strupper(char *dst, size_t dstsize, const char *src, ssize_t srclen,
 			pg_locale_t locale)
 {
+	srclen = (srclen < 0) ? strlen(src) : srclen;
+
 	if (locale->ctype_is_c)
 		return strupper_c(dst, dstsize, src, srclen);
 	else if (locale->provider == COLLPROVIDER_BUILTIN)
@@ -1391,6 +1397,8 @@ size_t
 pg_strfold(char *dst, size_t dstsize, const char *src, ssize_t srclen,
 		   pg_locale_t locale)
 {
+	srclen = (srclen < 0) ? strlen(src) : srclen;
+
 	/* in the C locale, casefolding is the same as lowercasing */
 	if (locale->ctype_is_c)
 		return strlower_c(dst, dstsize, src, srclen);
-- 
2.43.0

