diff options
Diffstat (limited to 'lib/Archive/Archive.cpp')
-rw-r--r-- | lib/Archive/Archive.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Archive/Archive.cpp b/lib/Archive/Archive.cpp index 20d9deec99c..8aa5d5bd779 100644 --- a/lib/Archive/Archive.cpp +++ b/lib/Archive/Archive.cpp @@ -15,6 +15,7 @@ #include "ArchiveInternals.h" #include "llvm/Bitcode/ReaderWriter.h" #include "llvm/Module.h" +#include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Process.h" #include "llvm/Support/system_error.h" @@ -66,8 +67,9 @@ ArchiveMember::ArchiveMember(Archive* PAR) // different file, presumably as an update to the member. It also makes sure // the flags are reset correctly. bool ArchiveMember::replaceWith(const sys::Path& newFile, std::string* ErrMsg) { - if (!newFile.exists()) { - if (ErrMsg) + bool Exists; + if (sys::fs::exists(newFile.str(), Exists) || !Exists) { + if (ErrMsg) *ErrMsg = "Can not replace an archive member with a non-existent file"; return true; } |