diff options
Diffstat (limited to 'lldb/source')
| -rw-r--r-- | lldb/source/Target/Process.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index 5394923af39..38622f0aa3e 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -3792,7 +3792,11 @@ Process::ProcessEventData::DoOnRemoval (Event *event_ptr) for (idx = 0; idx < num_threads; ++idx) thread_index_array[idx] = curr_thread_list.GetThreadAtIndex(idx)->GetIndexID(); - bool still_should_stop = true; + // Use this to track whether we should continue from here. We will only continue the target running if + // no thread says we should stop. Of course if some thread's PerformAction actually sets the target running, + // then it doesn't matter what the other threads say... + + bool still_should_stop = false; for (idx = 0; idx < num_threads; ++idx) { @@ -3833,10 +3837,10 @@ Process::ProcessEventData::DoOnRemoval (Event *event_ptr) SetRestarted (true); break; } - else if (!stop_info_sp->ShouldStop(event_ptr)) - { - still_should_stop = false; - } + + bool this_thread_wants_to_stop = stop_info_sp->ShouldStop(event_ptr); + if (still_should_stop == false) + still_should_stop = this_thread_wants_to_stop; } } |

