diff options
author | Chris Lattner <sabre@nondot.org> | 2006-07-18 06:57:51 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-07-18 06:57:51 +0000 |
commit | cca68faac23e0a6c5bb89135cbd3b73ebcd91834 (patch) | |
tree | 1f9f48bbd9df174a5753a0cdddc0b2638890365c | |
parent | c22c7d3cdf62168b8871d52d0eba3cae98f878b3 (diff) | |
download | external_llvm-cca68faac23e0a6c5bb89135cbd3b73ebcd91834.zip external_llvm-cca68faac23e0a6c5bb89135cbd3b73ebcd91834.tar.gz external_llvm-cca68faac23e0a6c5bb89135cbd3b73ebcd91834.tar.bz2 |
Reduce code in the error path by only allocating info_ if everything looks
good.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29170 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/System/Unix/MappedFile.inc | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/System/Unix/MappedFile.inc b/lib/System/Unix/MappedFile.inc index d194908..8cd2a96 100644 --- a/lib/System/Unix/MappedFile.inc +++ b/lib/System/Unix/MappedFile.inc @@ -43,7 +43,6 @@ void MappedFile::initialize() { 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 @@ void MappedFile::initialize() { 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() { |