diff options
author | Vedant Kumar <vsk@apple.com> | 2016-08-03 19:02:50 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-08-03 19:02:50 +0000 |
commit | 4031d9f80e67c4e36c233e1c390dabed994e9316 (patch) | |
tree | e5242d81491fb0453dfb82b7a611a176368ae75a /llvm/lib/Object/ArchiveWriter.cpp | |
parent | 43aeb001c959098167dec6272160ee73d187067c (diff) | |
download | llvm-4031d9f80e67c4e36c233e1c390dabed994e9316.zip llvm-4031d9f80e67c4e36c233e1c390dabed994e9316.tar.gz llvm-4031d9f80e67c4e36c233e1c390dabed994e9316.tar.bz2 |
Reapply "More fixes to get good error messages for bad archives."
This reverts commit the revert commit r277627. The build errors
mentioned in r277627 were likely caused by an unclean build directory.
Sorry for the noise.
llvm-svn: 277630
Diffstat (limited to 'llvm/lib/Object/ArchiveWriter.cpp')
-rw-r--r-- | llvm/lib/Object/ArchiveWriter.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/lib/Object/ArchiveWriter.cpp b/llvm/lib/Object/ArchiveWriter.cpp index 922d1b7..4ede536 100644 --- a/llvm/lib/Object/ArchiveWriter.cpp +++ b/llvm/lib/Object/ArchiveWriter.cpp @@ -47,10 +47,22 @@ NewArchiveMember::getOldMember(const object::Archive::Child &OldMember, NewArchiveMember M; M.Buf = MemoryBuffer::getMemBuffer(*BufOrErr, false); if (!Deterministic) { - M.ModTime = OldMember.getLastModified(); - M.UID = OldMember.getUID(); - M.GID = OldMember.getGID(); - M.Perms = OldMember.getAccessMode(); + Expected<sys::TimeValue> ModTimeOrErr = OldMember.getLastModified(); + if (!ModTimeOrErr) + return ModTimeOrErr.takeError(); + M.ModTime = ModTimeOrErr.get(); + Expected<unsigned> UIDOrErr = OldMember.getUID(); + if (!UIDOrErr) + return UIDOrErr.takeError(); + M.UID = UIDOrErr.get(); + Expected<unsigned> GIDOrErr = OldMember.getGID(); + if (!GIDOrErr) + return GIDOrErr.takeError(); + M.GID = GIDOrErr.get(); + Expected<sys::fs::perms> AccessModeOrErr = OldMember.getAccessMode(); + if (!AccessModeOrErr) + return AccessModeOrErr.takeError(); + M.Perms = AccessModeOrErr.get(); } return std::move(M); } |