diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-13 23:07:05 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-07-13 23:07:05 +0000 |
commit | c60d0d2a159154bbcff75fabfdf558c411096713 (patch) | |
tree | 609aeb4242b4ebb6d140a59581d75af8618588e1 /llvm/lib/Object/Archive.cpp | |
parent | 15deb803b4af1914d0aed0f7215f8f75b9561554 (diff) | |
download | llvm-c60d0d2a159154bbcff75fabfdf558c411096713.zip llvm-c60d0d2a159154bbcff75fabfdf558c411096713.tar.gz llvm-c60d0d2a159154bbcff75fabfdf558c411096713.tar.bz2 |
Fix reading archive members with / in the name.
This is important for thin archives.
llvm-svn: 242082
Diffstat (limited to 'llvm/lib/Object/Archive.cpp')
-rw-r--r-- | llvm/lib/Object/Archive.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp index b9d949b..efcc2d6 100644 --- a/llvm/lib/Object/Archive.cpp +++ b/llvm/lib/Object/Archive.cpp @@ -162,10 +162,10 @@ ErrorOr<StringRef> Archive::Child::getName() const { + Parent->StringTable->getSize())) return object_error::parse_failed; - // GNU long file names end with a /. + // GNU long file names end with a "/\n". if (Parent->kind() == K_GNU || Parent->kind() == K_MIPS64) { - StringRef::size_type End = StringRef(addr).find('/'); - return StringRef(addr, End); + StringRef::size_type End = StringRef(addr).find('\n'); + return StringRef(addr, End - 1); } return StringRef(addr); } else if (name.startswith("#1/")) { |