A small fix for ObjectFileMachO::ParseSymtab() where a pointer
into the middle of a vector was being used after the vector may
have been resized.
<rdar://problem/11284937>
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@155421 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 523acd8..c9b9023 100644
--- a/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -2236,10 +2236,14 @@
else
{
// Make a synthetic symbol to describe the trampoline stub
+ Mangled stub_symbol_mangled_name(stub_symbol->GetMangled());
if (sym_idx >= num_syms)
+ {
sym = symtab->Resize (++num_syms);
+ stub_symbol = NULL; // this pointer no longer valid
+ }
sym[sym_idx].SetID (synthetic_sym_id++);
- sym[sym_idx].GetMangled() = stub_symbol->GetMangled();
+ sym[sym_idx].GetMangled() = stub_symbol_mangled_name;
sym[sym_idx].SetType (eSymbolTypeTrampoline);
sym[sym_idx].SetIsSynthetic (true);
sym[sym_idx].GetAddress() = so_addr;