Handle Archive::getNumberOfSymbols being called in an archive with no symbols.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 8 Oct 2015 18:06:20 +0000 (18:06 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 8 Oct 2015 18:06:20 +0000 (18:06 +0000)
No change in llvm, but will be tested from lld.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249709 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Object/Archive.cpp

index 941f72bb6a673aa051fddb6e823271b2b953384f..42fec39851d2be3a4c6f930890d9c3e8ffd1329d 100644 (file)
@@ -510,12 +510,12 @@ Archive::symbol_iterator Archive::symbol_begin() const {
 }
 
 Archive::symbol_iterator Archive::symbol_end() const {
-  if (!hasSymbolTable())
-    return symbol_iterator(Symbol(this, 0, 0));
   return symbol_iterator(Symbol(this, getNumberOfSymbols(), 0));
 }
 
 uint32_t Archive::getNumberOfSymbols() const {
+  if (!hasSymbolTable())
+    return 0;
   const char *buf = getSymbolTable().begin();
   if (kind() == K_GNU)
     return read32be(buf);