llvm-undname: Fix another crash-on-invalid
authorNico Weber <nicolasweber@gmx.de>
Wed, 10 Apr 2019 17:31:34 +0000 (17:31 +0000)
committerNico Weber <nicolasweber@gmx.de>
Wed, 10 Apr 2019 17:31:34 +0000 (17:31 +0000)
commit5f6eb1817af8d525ee93ac8a1f0cf9c881b3ebd3
tree4ae8cad081f0ad5f35a02b2236bc65d1b752e446
parent2064e45ce35a58d706b9b0601e785f94e3afe871
llvm-undname: Fix another crash-on-invalid

This fixes a regression from https://reviews.llvm.org/D60354. We used to

  SymbolNode *Symbol = demangleEncodedSymbol(MangledName, QN);
  if (Symbol) {
    Symbol->Name = QN;
  }

but changed that to
  SymbolNode *Symbol = demangleEncodedSymbol(MangledName, QN);
  if (Error)
    return nullptr;
  Symbol->Name = QN;

and one branch somewhere returned a nullptr without setting Error.

Looking at the code changed in r340083 and r340710 that branch looks
like a remnant from an earlier attempt to demangle RTTI descriptors
that has since been rewritten -- so just remove this branch. It
shouldn't change behavior for correctly mangled symbols.

llvm-svn: 358112
llvm/lib/Demangle/MicrosoftDemangle.cpp
llvm/test/Demangle/invalid-manglings.test