For PR797:
authorReid Spencer <rspencer@reidspencer.com>
Tue, 22 Aug 2006 16:10:12 +0000 (16:10 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 22 Aug 2006 16:10:12 +0000 (16:10 +0000)
Adjust the use of MappedFile to its new non-throwing interface. We just
propagate the exceptions if an error occurs. This will get cleaned up
later, incrementally.

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

lib/Bytecode/Reader/ReaderWrappers.cpp

index b9e7cd29aacf488b502c9a50f43da4ad863c0630..176715939257706d7331b2121cb3a0a0b8a1240c 100644 (file)
@@ -48,11 +48,17 @@ namespace {
 BytecodeFileReader::BytecodeFileReader(const std::string &Filename,
                                        llvm::BytecodeHandler* H )
   : BytecodeReader(H)
-  , mapFile( sys::Path(Filename))
+  , mapFile()
 {
-  mapFile.map();
+  std::string ErrMsg;
+  if (mapFile.open(sys::Path(Filename), sys::MappedFile::READ_ACCESS, &ErrMsg))
+    throw ErrMsg;
+  if (!mapFile.map(&ErrMsg))
+    throw ErrMsg;
   unsigned char* buffer = reinterpret_cast<unsigned char*>(mapFile.base());
-  ParseBytecode(buffer, mapFile.size(), Filename);
+  if (ParseBytecode(buffer, mapFile.size(), Filename, &ErrMsg)) {
+    throw ErrMsg;
+  }
 }
 
 //===----------------------------------------------------------------------===//
@@ -98,11 +104,10 @@ BytecodeBufferReader::BytecodeBufferReader(const unsigned char *Buf,
     ParseBegin = Buffer = Buf;
     MustDelete = false;
   }
-  try {
-    ParseBytecode(ParseBegin, Length, ModuleID);
-  } catch (...) {
+  std::string ErrMsg;
+  if (ParseBytecode(ParseBegin, Length, ModuleID, &ErrMsg)) {
     if (MustDelete) delete [] Buffer;
-    throw;
+    throw ErrMsg;
   }
 }
 
@@ -149,7 +154,10 @@ BytecodeStdinReader::BytecodeStdinReader( BytecodeHandler* H )
     throw std::string("Standard Input empty!");
 
   FileBuf = &FileData[0];
-  ParseBytecode(FileBuf, FileData.size(), "<stdin>");
+  std::string ErrMsg;
+  if (ParseBytecode(FileBuf, FileData.size(), "<stdin>", &ErrMsg)) {
+    throw ErrMsg;
+  }
 }
 
 //===----------------------------------------------------------------------===//