Check the inode in addition to size and modification time to determine
whether a file has changed since it was originally read.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98726 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp
index 440e688..4c24d03 100644
--- a/lib/Basic/SourceManager.cpp
+++ b/lib/Basic/SourceManager.cpp
@@ -93,9 +93,11 @@
<< Entry->getName() << ErrorStr;
Buffer.setInt(true);
} else if (FileInfo.st_size != Entry->getSize() ||
- FileInfo.st_mtime != Entry->getModificationTime()) {
- // Check that the file's size and modification time is the same as
- // in the file entry (which may have come from a stat cache).
+ FileInfo.st_mtime != Entry->getModificationTime() ||
+ FileInfo.st_ino != Entry->getInode()) {
+ // Check that the file's size, modification time, and inode are
+ // the same as in the file entry (which may have come from a
+ // stat cache).
Diag.Report(diag::err_file_modified) << Entry->getName();
Buffer.setInt(true);
}