diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-07-05 00:23:05 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2016-07-05 00:23:05 +0000 |
commit | aecbdf70bfd3dbba8fe5c902046188821513e1b8 (patch) | |
tree | f99db926dbc38527396adbadffda9eee8fdb347b /llvm/lib/Object/Archive.cpp | |
parent | 4a105d73a9c0633a248049a622d6a74fa5dd8ca4 (diff) | |
download | llvm-aecbdf70bfd3dbba8fe5c902046188821513e1b8.zip llvm-aecbdf70bfd3dbba8fe5c902046188821513e1b8.tar.gz llvm-aecbdf70bfd3dbba8fe5c902046188821513e1b8.tar.bz2 |
Object: support empty UID/GID fields
Normal archives do not have empty UID/GID fields. However, the Microsoft
Import library format is a customized archive (it just uses an alternate symbol
index format). When the import library is constructed by lib.exe, the UID and
GID fields are left empty. Do not abort on such an input.
llvm-svn: 274528
Diffstat (limited to 'llvm/lib/Object/Archive.cpp')
-rw-r--r-- | llvm/lib/Object/Archive.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp index 4e9a18ee4..4720bf8 100644 --- a/llvm/lib/Object/Archive.cpp +++ b/llvm/lib/Object/Archive.cpp @@ -69,14 +69,20 @@ sys::TimeValue ArchiveMemberHeader::getLastModified() const { unsigned ArchiveMemberHeader::getUID() const { unsigned Ret; - if (StringRef(UID, sizeof(UID)).rtrim(' ').getAsInteger(10, Ret)) + StringRef User = StringRef(UID, sizeof(UID)).rtrim(' '); + if (User.empty()) + return 0; + if (User.getAsInteger(10, Ret)) llvm_unreachable("UID time not a decimal number."); return Ret; } unsigned ArchiveMemberHeader::getGID() const { unsigned Ret; - if (StringRef(GID, sizeof(GID)).rtrim(' ').getAsInteger(10, Ret)) + StringRef Group = StringRef(GID, sizeof(GID)).rtrim(' '); + if (Group.empty()) + return 0; + if (Group.getAsInteger(10, Ret)) llvm_unreachable("GID time not a decimal number."); return Ret; } |