Skip to content

Commit 5f6eb18

Browse files
committedApr 10, 2019
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
1 parent 2064e45 commit 5f6eb18

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed
 

‎llvm/lib/Demangle/MicrosoftDemangle.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -696,8 +696,6 @@ SymbolNode *Demangler::demangleEncodedSymbol(StringView &MangledName,
696696
StorageClass SC = demangleVariableStorageClass(MangledName);
697697
return demangleVariableEncoding(MangledName, SC);
698698
}
699-
case '8':
700-
return nullptr;
701699
}
702700
FunctionSymbolNode *FSN = demangleFunctionEncoding(MangledName);
703701

‎llvm/test/Demangle/invalid-manglings.test

+5
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,8 @@
8989
; CHECK-EMPTY:
9090
; CHECK-NEXT: ??__E?Foo@@0HA@@
9191
; CHECK-NEXT: error: Invalid mangled name
92+
93+
??8@8
94+
; CHECK-EMPTY:
95+
; CHECK-NEXT: ??8@8
96+
; CHECK-NEXT: error: Invalid mangled name

0 commit comments

Comments
 (0)