diff --git a/kernel/io.cc b/kernel/io.cc index d5d2994b2..d7d126c4c 100644 --- a/kernel/io.cc +++ b/kernel/io.cc @@ -251,7 +251,15 @@ bool check_is_directory(const std::string& dirname) { #if defined(_WIN32) struct _stat info; - if (_stat(dirname.c_str(), &info) != 0) + auto dirname_ = dirname; + + /* On old versions of Visual Studio and current versions on MinGW, + _stat will fail if the path ends with a trailing slash. */ + if (dirname.back() == '/' || dirname.back() == '\\') { + dirname_ = dirname.substr(0, dirname.length() - 1); + } + + if (_stat(dirname_.c_str(), &info) != 0) { return false; }