Skip to content

Commit f4469ca

Browse files
dschoGit for Windows Build Agent
authored andcommitted
Merge pull request #2673 from dscho/also-handle-fscache-addon-for-#2637
Fix `lstat()`'s `st_size` computation for symbolic links when FSCache is in effect
2 parents 66102ea + 7662418 commit f4469ca

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

compat/win32/fscache.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,18 @@ int fscache_lstat(const char *filename, struct stat *st)
596596
if (!fse)
597597
return -1;
598598

599+
/*
600+
* Special case symbolic links: FindFirstFile()/FindNextFile() did not
601+
* provide us with the length of the target path.
602+
*/
603+
if (fse->u.s.st_size == MAX_LONG_PATH && S_ISLNK(fse->st_mode)) {
604+
char buf[MAX_LONG_PATH];
605+
int len = readlink(filename, buf, sizeof(buf) - 1);
606+
607+
if (len > 0)
608+
fse->u.s.st_size = len;
609+
}
610+
599611
/* copy stat data */
600612
st->st_ino = 0;
601613
st->st_gid = 0;

0 commit comments

Comments
 (0)