aboutsummaryrefslogtreecommitdiff
path: root/strbuf.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-01-21 08:29:00 -0800
committerJunio C Hamano <gitster@pobox.com>2026-01-21 08:29:00 -0800
commit39d66ddffd2b1dda275a6dd61df3eebac35fcf8a (patch)
tree3b18ec048f1154499995d5bf91b67ff9213198c8 /strbuf.c
parentbc5cbbe24650f4234ed4ed2c21c58058f96dfcac (diff)
parentaa7b8864d841f16044b0d79fce5baaec1830b3e3 (diff)
downloadgit-39d66ddffd2b1dda275a6dd61df3eebac35fcf8a.tar.xz
Merge branch 'js/prep-symlink-windows'
Further preparation to upstream symbolic link support on Windows. * js/prep-symlink-windows: trim_last_path_component(): avoid hard-coding the directory separator strbuf_readlink(): support link targets that exceed 2*PATH_MAX strbuf_readlink(): avoid calling `readlink()` twice in corner-cases init: do parse _all_ core.* settings early mingw: do resolve symlinks in `getcwd()`
Diffstat (limited to 'strbuf.c')
-rw-r--r--strbuf.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/strbuf.c b/strbuf.c
index 7fb7d12ac0..59678bf5b0 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -566,7 +566,7 @@ ssize_t strbuf_write(struct strbuf *sb, FILE *f)
return sb->len ? fwrite(sb->buf, 1, sb->len, f) : 0;
}
-#define STRBUF_MAXLINK (2*PATH_MAX)
+#define STRBUF_MAXLINK (32767)
int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint)
{
@@ -578,12 +578,12 @@ int strbuf_readlink(struct strbuf *sb, const char *path, size_t hint)
while (hint < STRBUF_MAXLINK) {
ssize_t len;
- strbuf_grow(sb, hint);
- len = readlink(path, sb->buf, hint);
+ strbuf_grow(sb, hint + 1);
+ len = readlink(path, sb->buf, hint + 1);
if (len < 0) {
if (errno != ERANGE)
break;
- } else if (len < hint) {
+ } else if (len <= hint) {
strbuf_setlen(sb, len);
return 0;
}