Re: [PATCH] abspath.c: use PATH_MAX in real_path_internal()
- From
Karsten Blees <karsten.blees@gmail.com>
- Date
- Jul 17, 2014, 23:02 UTC
- Message-ID
- <53C8561F.5090600@gmail.com>
- In-Reply-To
- <xmqqoawnq2vv.fsf@gitster.dls.corp.google.com>
Am 17.07.2014 20:03, schrieb Junio C Hamano:
Show 18 quoted lines
> Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes: > >> This array 'cwd' is used to store the result from getcwd() and chdir() >> back. PATH_MAX is the right constant for the job. On systems with >> longer PATH_MAX (eg. 4096 on Linux), hard coding 1024 fails stuff, >> e.g. "git init". Make it static too to reduce stack usage. >> >> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> >> --- > > Thanks. It seems that this 1024 has been with us since the > beginning of this piece of code. I briefly wondered if there are > strange platform that will have PATH_MAX shorter than 1024 that will > be hurt by this change, but the result in cwd[] is used to grow the > final result bufs[] that is sized based on PATH_MAX anyway, so it > will not be an issue (besides, the absurdly short one seems to be > a different macro, MAX_PATH, on Windows). >
Indeed, there's a strange platform where PATH_MAX is only 259. With Unicode support, the current directory can be that many wide characters, which means up to 3 * PATH_MAX UTF-8 bytes (if all of them are CJK).
I don't think this will be a problem, though, as the return buffer is PATH_MAX-bounded as well.