From ce76c62b089956fe3ccad72fd3086ee1432b0210 Mon Sep 17 00:00:00 2001 From: Jim Ingham Date: Thu, 31 May 2012 20:48:41 +0000 Subject: Fix a bunch of thinko's in the command "thread continue". rdar://problem/11562050 llvm-svn: 157767 --- lldb/source/Commands/CommandObjectThread.cpp | 40 +++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 7 deletions(-) (limited to 'lldb/source/Commands/CommandObjectThread.cpp') diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp index b2e4c97cd55..48435134ed3 100644 --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -660,11 +660,26 @@ public: std::vector resume_thread_indexes; for (uint32_t i=0; iGetThreadList().FindThreadByIndexID(idx)) + { + if (find(resume_thread_indexes.begin(), resume_thread_indexes.end(), idx) == resume_thread_indexes.end()) + resume_thread_indexes.push_back(idx); + } else - result.AppendWarningWithFormat("Thread index %u out of range.\n", idx); + { + result.AppendErrorWithFormat("thread index %u out of range.\n", idx); + result.SetStatus (eReturnStatusFailed); + return false; + } } if (resume_thread_indexes.empty()) @@ -675,13 +690,24 @@ public: } else { - result.AppendMessage ("Resuming thread "); + if (resume_thread_indexes.size() == 1) + result.AppendMessageWithFormat ("Resuming thread: "); + else + result.AppendMessageWithFormat ("Resuming threads: "); + for (idx=0; idxGetThreadList().FindThreadByIndexID(idx).get(); - if (find(resume_thread_indexes.begin(), resume_thread_indexes.end(), idx) != resume_thread_indexes.end()) + std::vector::iterator this_thread_pos = find(resume_thread_indexes.begin(), resume_thread_indexes.end(), thread->GetIndexID()); + + if (this_thread_pos != resume_thread_indexes.end()) { - result.AppendMessageWithFormat ("%u ", idx); + resume_thread_indexes.erase(this_thread_pos); + if (resume_thread_indexes.size() > 0) + result.AppendMessageWithFormat ("%u, ", thread->GetIndexID()); + else + result.AppendMessageWithFormat ("%u ", thread->GetIndexID()); + thread->SetResumeState (eStateRunning); } else -- cgit v1.2.3