From 2d90c65500ea1bf668a89c72958f15f02636f3e5 Mon Sep 17 00:00:00 2001 From: Bo Peng Date: Tue, 22 May 2007 00:27:56 +0000 Subject: [PATCH] Detect if file is actually a directory in support/lyxsum.cpp, fix bug 3622 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18449 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/support/lyxsum.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/support/lyxsum.cpp b/src/support/lyxsum.cpp index 165aff3273..a1e83fe6fe 100644 --- a/src/support/lyxsum.cpp +++ b/src/support/lyxsum.cpp @@ -17,12 +17,14 @@ #include "support/FileName.h" #include +#include #include using std::endl; using std::string; +namespace fs = boost::filesystem; // OK, this is ugly, but it is the only workaround I found to compile // with gcc (any version) on a system which uses a non-GNU toolchain. @@ -126,8 +128,13 @@ unsigned long sum(FileName const & file) LYXERR(Debug::FILES) << "lyx::sum() using istreambuf_iterator (fast)" << endl; - ifstream ifs(file.toFilesystemEncoding().c_str()); - if (!ifs) return 0; + string filename = file.toFilesystemEncoding(); + // a directory may be passed here so we need to test it. (bug 3622) + if (fs::is_directory(filename)) + return 0; + ifstream ifs(filename.c_str()); + if (!ifs) + return 0; istreambuf_iterator beg(ifs); istreambuf_iterator end; @@ -145,8 +152,13 @@ unsigned long sum(FileName const & file) << "lyx::sum() using istream_iterator (slow as a snail)" << endl; - ifstream ifs(file.toFilesystemEncoding().c_str()); - if (!ifs) return 0; + string filename = file.toFilesystemEncoding(); + // a directory may be passed here so we need to test it. (bug 3622) + if (fs::is_directory(filename)) + return 0; + ifstream ifs(filename.c_str()); + if (!ifs) + return 0; ifs.unsetf(ios::skipws); istream_iterator beg(ifs); -- 2.39.2