Handle Archive::getNumberOfSymbols being called in an archive with no symbols.
[oota-llvm.git] / 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);