For PR797:
authorReid Spencer <rspencer@reidspencer.com>
Tue, 22 Aug 2006 16:06:27 +0000 (16:06 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 22 Aug 2006 16:06:27 +0000 (16:06 +0000)
Adjust users of MappedFile to its new non-throwing interface.  Note that in
most cases the lazy step of just throwing after a call to MappedFile was
installed. This was done in the name of incremental changes. Getting rid of
the new throw statements will take adjustment of interfaces and propagation
of errors to higher levels.  Those changes will come in subsequent patches.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29817 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Debugger/SourceFile.h
lib/Debugger/SourceFile.cpp
lib/Support/FileUtilities.cpp

index 6d49fbe5d2212227246ff9d5260a9945b1741f2d..e54660cb7a92afe9f981915864316025344d63ff 100644 (file)
@@ -50,7 +50,10 @@ namespace llvm {
     /// reading it, or if the user cancels the operation.  Instead, it will just
     /// be an empty source file.
     SourceFile(const std::string &fn, const GlobalVariable *Desc)
-      : Filename(fn), Descriptor(Desc), File(Filename) {
+      : Filename(fn), Descriptor(Desc), File() {
+        std::string ErrMsg;
+      if (File.open(Filename, sys::MappedFile::READ_ACCESS, &ErrMsg))
+        throw ErrMsg;
       readFile();
     }
     ~SourceFile() {
index 222cdfa26aaa3e2df6098df71076a7e847e9dfde..799231fc8ddbeab3b0c87bda07df7428d01e0e51 100644 (file)
@@ -19,7 +19,9 @@ using namespace llvm;
 /// readFile - Load Filename
 ///
 void SourceFile::readFile() {
-  File.map();
+  std::string ErrMsg;
+  if (File.map(&ErrMsg))
+    throw ErrMsg;
 }
 
 /// calculateLineOffsets - Compute the LineOffset vector for the current file.
index d4608ccb65b394a4b13d3bddcd9d04fe90b83fcc..313598942a747b54be5795b1a704359f02175fb0 100644 (file)
@@ -147,9 +147,11 @@ int llvm::DiffFilesWithTolerance(const sys::Path &FileA,
                                  double AbsTol, double RelTol,
                                  std::string *Error) {
   sys::FileStatus FileAStat, FileBStat;
-  if (FileA.getFileStatus(FileAStat, Error) ||
-      FileB.getFileStatus(FileBStat, Error))
+  if (FileA.getFileStatus(FileAStat, Error))
     return 2;
+  if (FileB.getFileStatus(FileBStat, Error))
+    return 2;
+
   // Check for zero length files because some systems croak when you try to
   // mmap an empty file.
   size_t A_size = FileAStat.getSize();
@@ -165,10 +167,16 @@ int llvm::DiffFilesWithTolerance(const sys::Path &FileA,
   try {
     // Now its safe to mmap the files into memory becasue both files
     // have a non-zero size.
-    sys::MappedFile F1(FileA);
-    sys::MappedFile F2(FileB);
-    F1.map();
-    F2.map();
+    sys::MappedFile F1;
+    if (F1.open(FileA, sys::MappedFile::READ_ACCESS, Error))
+      return 2;
+    sys::MappedFile F2;
+    if (F2.open(FileB, sys::MappedFile::READ_ACCESS, Error))
+      return 2;
+    if (!F1.map(Error))
+      return 2;
+    if (!F2.map(Error))
+      return 2;
 
     // Okay, now that we opened the files, scan them for the first difference.
     char *File1Start = F1.charBase();