-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
Describe the bug
Running doxygen.exe Doxyfile (MSWindows 10, 64bit) against a tree of MarkDown + source files. doxygen progress reporting carries on until it prints Building directory list..., after which it stops and never terminates. (Ctrl+C aborts the run)
Only renaming the directories leading up to the file that' has a longer path suffices to make doxygen run okay, without locking up.
Clearly a PATH_MAX / MAX_PATH bug, IMO.
In my own software, I use the Linux path limit (4096) as an override for local, statically sized, path char arrays and use UNC paths like \\?\P:\dev\... to ensure Win32 APIs don't b0rk on the longer paths. Of course, that's a bit of hacky fix as Windows accepts UNC paths of up to 32K, according to the docs, but for a quick port of existing code, this move suffices, at least for me.
Related dev material:
- https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry
- https://blog.r-project.org/2023/03/07/path-length-limit-on-windows/
- https://serverfault.com/questions/9546/filename-length-limits-on-linux
To Reproduce
Clone/copy the repo https://github.com/GerHobbelt/doxygen-markdown-linking-problem and run doxygen.exe Doxyfile in the root of that repo dir tree (so relative paths SHOULD be okay) to see bugger fail when Doxyfile::line 12 (EXCLUDE_PATTERNS = */uber-long-file-path5/*) is uncommented.
Version
Tested to still fail as described when using the latest Win64 build artifact (doxygen.exe):
$ doxygen.exe -v
1.10.0 (06fcb408e9de97cc6acfdbec4e261a302c0d204b*)
Probably related issues:
- Doxygen does not work if there is Unicode in a path #9129
- Markdown relative links - not working for other folders #8130 (flagged as closed, but still failing, see next issue)
- Relative markdown file reference #7032 (flagged as closed)