commit ed4023452f85f6c745ce473b2503f4e46fb02cd9 Author: Jonathan Wakely Date: Fri Sep 11 15:19:27 2015 +0100 Fix filesystem::canonical on Solaris 10. PR libstdc++/67173 * src/filesystem/ops.cc (filesystem::canonical): Allocate buffer for realpath on Solaris 10. diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc index 661685a..cefb927 100644 --- a/libstdc++-v3/src/filesystem/ops.cc +++ b/libstdc++-v3/src/filesystem/ops.cc @@ -28,6 +28,7 @@ #include #include #include +#include // PATH_MAX #ifdef _GLIBCXX_HAVE_UNISTD_H # include # if defined(_GLIBCXX_HAVE_SYS_STAT_H) && defined(_GLIBCXX_HAVE_SYS_TYPES_H) @@ -97,7 +98,11 @@ fs::canonical(const path& p, const path& base, error_code& ec) { path can; #ifdef _GLIBCXX_USE_REALPATH - if (char_ptr rp = char_ptr{::realpath(absolute(p, base).c_str(), nullptr)}) + char* buffer = nullptr; +#if defined(__SunOS_5_10) && defined(PATH_MAX) + buffer = (char*)::malloc(PATH_MAX); +#endif + if (char_ptr rp = char_ptr{::realpath(absolute(p, base).c_str(), buffer)}) { can.assign(rp.get()); ec.clear();