<rdar://problem/11852100>

The "stop-line-count-after" and "stop-line-count-before" settings are broken. This fixes them.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@160071 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/StackFrame.cpp b/source/Target/StackFrame.cpp
index 780a263..d9c9eb2 100644
--- a/source/Target/StackFrame.cpp
+++ b/source/Target/StackFrame.cpp
@@ -1296,10 +1296,9 @@
 bool
 StackFrame::GetStatus (Stream& strm,
                        bool show_frame_info,
-                       bool show_source,
-                       uint32_t source_lines_before,
-                       uint32_t source_lines_after)
+                       bool show_source)
 {
+    
     if (show_frame_info)
     {
         strm.Indent();
@@ -1312,56 +1311,62 @@
         bool have_source = false;
         DebuggerInstanceSettings::StopDisassemblyType disasm_display = DebuggerInstanceSettings::eStopDisassemblyTypeNever;
         Target *target = exe_ctx.GetTargetPtr();
-        if (target && (source_lines_before || source_lines_after))
+        if (target)
         {
-            GetSymbolContext(eSymbolContextCompUnit | eSymbolContextLineEntry);
+            Debugger &debugger = target->GetDebugger();
+            const uint32_t source_lines_before = debugger.GetStopSourceLineCount(true);
+            const uint32_t source_lines_after = debugger.GetStopSourceLineCount(false);
+            disasm_display = debugger.GetStopDisassemblyDisplay ();
 
-            if (m_sc.comp_unit && m_sc.line_entry.IsValid())
+            if (source_lines_before > 0 || source_lines_after > 0)
             {
-                if (target->GetSourceManager().DisplaySourceLinesWithLineNumbers (m_sc.line_entry.file,
-                                                                                  m_sc.line_entry.line,
-                                                                                  source_lines_before,
-                                                                                  source_lines_after,
-                                                                                  "->",
-                                                                                  &strm))
+                GetSymbolContext(eSymbolContextCompUnit | eSymbolContextLineEntry);
+
+                if (m_sc.comp_unit && m_sc.line_entry.IsValid())
                 {
-                    have_source = true;
+                    if (target->GetSourceManager().DisplaySourceLinesWithLineNumbers (m_sc.line_entry.file,
+                                                                                      m_sc.line_entry.line,
+                                                                                      source_lines_before,
+                                                                                      source_lines_after,
+                                                                                      "->",
+                                                                                      &strm))
+                    {
+                        have_source = true;
+                    }
                 }
             }
-            disasm_display = target->GetDebugger().GetStopDisassemblyDisplay ();
-        }
-        
-        switch (disasm_display)
-        {
-        case DebuggerInstanceSettings::eStopDisassemblyTypeNever:
-            break;
-
-        case DebuggerInstanceSettings::eStopDisassemblyTypeNoSource:
-            if (have_source)
+            switch (disasm_display)
+            {
+            case DebuggerInstanceSettings::eStopDisassemblyTypeNever:
                 break;
-            // Fall through to next case
-        case DebuggerInstanceSettings::eStopDisassemblyTypeAlways:
-            if (target)
-            {
-                const uint32_t disasm_lines = target->GetDebugger().GetDisassemblyLineCount();
-                if (disasm_lines > 0)
+                
+            case DebuggerInstanceSettings::eStopDisassemblyTypeNoSource:
+                if (have_source)
+                    break;
+                // Fall through to next case
+            case DebuggerInstanceSettings::eStopDisassemblyTypeAlways:
+                if (target)
                 {
-                    const ArchSpec &target_arch = target->GetArchitecture();
-                    AddressRange pc_range;
-                    pc_range.GetBaseAddress() = GetFrameCodeAddress();
-                    pc_range.SetByteSize(disasm_lines * target_arch.GetMaximumOpcodeByteSize());
-                    Disassembler::Disassemble (target->GetDebugger(),
-                                               target_arch,
-                                               NULL,
-                                               exe_ctx,
-                                               pc_range,
-                                               disasm_lines,
-                                               0,
-                                               Disassembler::eOptionMarkPCAddress,
-                                               strm);
+                    const uint32_t disasm_lines = debugger.GetDisassemblyLineCount();
+                    if (disasm_lines > 0)
+                    {
+                        const ArchSpec &target_arch = target->GetArchitecture();
+                        AddressRange pc_range;
+                        pc_range.GetBaseAddress() = GetFrameCodeAddress();
+                        pc_range.SetByteSize(disasm_lines * target_arch.GetMaximumOpcodeByteSize());
+                        Disassembler::Disassemble (target->GetDebugger(),
+                                                   target_arch,
+                                                   NULL,
+                                                   exe_ctx,
+                                                   pc_range,
+                                                   disasm_lines,
+                                                   0,
+                                                   Disassembler::eOptionMarkPCAddress,
+                                                   strm);
+                    }
                 }
+                break;
             }
-            break;
         }
     }
     return true;