vcl/generic/fontmanager/fontmanager.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
New commits: commit 2cd4e55bb36a9a3d13971b530469188e3fb59dfe Author: Eike Rathke <[email protected]> Date: Sat Mar 30 19:23:55 2013 +0100 certainly this was not meant to be _PC_NAME_MAX _PC_NAME_MAX is a symbolic constant meant to be used as a pathconf() argument, not a buffer length. This piece of code was even "honored" in http://womble.decadent.org.uk/readdir_r-advisory.html "The code that enumerates fonts and plugins in the appropriate directories uses a stack buffer of type long[sizeof(struct dirent) + _PC_NAME_MAX + 1]. I can only assume this is the result of a programmer cutting his crack with aluminium filings." Thanks to Heiner Rechtien for pointing this out. Note: declaring the buffer of type long instead of char looks weird but probably has the reason that it is casted to struct dirent* for the readdir_r() call that might not work on architectures that forbid arbitrary alignment on non-even boundaries. Change-Id: Ie959b8905d1328c6fcaefbf6f6c915cc430e85b6 diff --git a/vcl/generic/fontmanager/fontmanager.cxx b/vcl/generic/fontmanager/fontmanager.cxx index c5a52f7..de66c52 100644 --- a/vcl/generic/fontmanager/fontmanager.cxx +++ b/vcl/generic/fontmanager/fontmanager.cxx @@ -1637,7 +1637,7 @@ void PrintFontManager::initialize() CALLGRIND_ZERO_STATS(); #endif - long aDirEntBuffer[ (sizeof(struct dirent)+_PC_NAME_MAX)+1 ]; + long aDirEntBuffer[ (sizeof(struct dirent)+PATH_MAX)+1 ]; if( ! m_pFontCache ) { _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
