mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-03 02:08:54 +00:00
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
This commit is contained in:
parent
c22c7d3cdf
commit
cca68faac2
@ -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() {
|
||||
|
Loading…
Reference in New Issue
Block a user