aboutsummaryrefslogtreecommitdiffstats
path: root/strbuf.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2025-01-13 13:02:01 -0800
committerJunio C Hamano <gitster@pobox.com>2025-01-13 13:02:01 -0800
commit757161efcca150a9a96b312d9e780a071e601a03 (patch)
tree8bc985feb492946da607f21ad4ffa8fbddfe1843 /strbuf.c
parent46afc2ba91a3c7fa8f1591c0a6a1b7c4ad0d2a07 (diff)
parentf93ff170b93a1782659637824b25923245ac9dd1 (diff)
downloadgit-757161efcca150a9a96b312d9e780a071e601a03.tar.gz
Sync with Git 2.48.1
Diffstat (limited to 'strbuf.c')
-rw-r--r--strbuf.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/strbuf.c b/strbuf.c
index 8ddd4b06c5..f30fdc6984 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -497,7 +497,9 @@ void strbuf_add_percentencode(struct strbuf *dst, const char *src, int flags)
unsigned char ch = src[i];
if (ch <= 0x1F || ch >= 0x7F ||
(ch == '/' && (flags & STRBUF_ENCODE_SLASH)) ||
- strchr(URL_UNSAFE_CHARS, ch))
+ ((flags & STRBUF_ENCODE_HOST_AND_PORT) ?
+ !isalnum(ch) && !strchr("-.:[]", ch) :
+ !!strchr(URL_UNSAFE_CHARS, ch)))
strbuf_addf(dst, "%%%02X", (unsigned char)ch);
else
strbuf_addch(dst, ch);