[llvm-commits] CVS: llvm/lib/System/Unix/MappedFile.inc

Chris Lattner lattner at cs.uiuc.edu
Mon Jul 17 23:58:03 PDT 2006



Changes in directory llvm/lib/System/Unix:

MappedFile.inc updated: 1.12 -> 1.13
---
Log message:

Reduce code in the error path by only allocating info_ if everything looks
good.


---
Diffs of the changes:  (+8 -10)

 MappedFile.inc |   18 ++++++++----------
 1 files changed, 8 insertions(+), 10 deletions(-)


Index: llvm/lib/System/Unix/MappedFile.inc
diff -u llvm/lib/System/Unix/MappedFile.inc:1.12 llvm/lib/System/Unix/MappedFile.inc:1.13
--- llvm/lib/System/Unix/MappedFile.inc:1.12	Tue Jul 18 01:52:52 2006
+++ llvm/lib/System/Unix/MappedFile.inc	Tue Jul 18 01:57:51 2006
@@ -43,7 +43,6 @@
   if (!path_.exists())
     throw std::string("Can't open file: ") + path_.toString();
   
-  info_ = new MappedFileInfo;
   int mode = 0;
   if (options_&READ_ACCESS) 
     if (options_&WRITE_ACCESS)
@@ -52,20 +51,19 @@
       mode = O_RDONLY;
   else if (options_&WRITE_ACCESS)
     mode = O_WRONLY;
-  info_->fd_ = ::open(path_.c_str(),mode);
 
-  if (info_->fd_ < 0) {
-    delete info_;
-    info_ = 0;
+  int FD = ::open(path_.c_str(), mode);
+  if (FD < 0)
     ThrowErrno(std::string("Can't open file: ") + path_.toString());
-  }
+
   struct stat sbuf;
-  if(::fstat(info_->fd_, &info_->sbuf_) < 0) {
-    ::close(info_->fd_);
-    delete info_;
-    info_ = 0;
+  if(::fstat(FD, &sbuf) < 0) {
+    ::close(FD);
     ThrowErrno(std::string("Can't stat file: ") + path_.toString());
   }
+  info_ = new MappedFileInfo;
+  info_->fd_ = FD;
+  info_->sbuf_ = sbuf;
 }
 
 void MappedFile::terminate() {






More information about the llvm-commits mailing list