summaryrefslogtreecommitdiffstats
path: root/lldb/source/Target/Process.cpp
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2011-05-22 21:45:01 +0000
committerJim Ingham <jingham@apple.com>2011-05-22 21:45:01 +0000
commita86046935bb9aa40cc646111373018be5bbca9dd (patch)
tree5e974c24946e8b2b21751127e4a2b87b8fc0bc96 /lldb/source/Target/Process.cpp
parent4cd5187f5bf8de2459c383791fbdff1870af2056 (diff)
downloadbcm5719-llvm-a86046935bb9aa40cc646111373018be5bbca9dd.tar.gz
bcm5719-llvm-a86046935bb9aa40cc646111373018be5bbca9dd.zip
Change the m_update_state to an int, and only trigger the "on removal"
action the second time the event is removed (the first is the internal -> external transition, the second when it is pulled off the public event queue, and further times when it is put back because we are faking a stop reason to hide the expression evaluation stops. llvm-svn: 131869
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r--lldb/source/Target/Process.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 58df901f2ad..9a7e2c65a49 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -2812,7 +2812,7 @@ Process::ProcessEventData::ProcessEventData () :
m_process_sp (),
m_state (eStateInvalid),
m_restarted (false),
- m_update_state (false),
+ m_update_state (0),
m_interrupted (false)
{
}
@@ -2822,7 +2822,7 @@ Process::ProcessEventData::ProcessEventData (const ProcessSP &process_sp, StateT
m_process_sp (process_sp),
m_state (state),
m_restarted (false),
- m_update_state (false),
+ m_update_state (0),
m_interrupted (false)
{
}
@@ -2848,12 +2848,13 @@ void
Process::ProcessEventData::DoOnRemoval (Event *event_ptr)
{
// This function gets called twice for each event, once when the event gets pulled
- // off of the private process event queue, and once when it gets pulled off of
- // the public event queue. m_update_state is used to distinguish these
- // two cases; it is false when we're just pulling it off for private handling,
- // and we don't want to do the breakpoint command handling then.
+ // off of the private process event queue, and then any number of times, first when it gets pulled off of
+ // the public event queue, then other times when we're pretending that this is where we stopped at the
+ // end of expression evaluation. m_update_state is used to distinguish these
+ // three cases; it is 0 when we're just pulling it off for private handling,
+ // and > 1 for expression evaluation, and we don't want to do the breakpoint command handling then.
- if (!m_update_state)
+ if (m_update_state != 1)
return;
m_process_sp->SetPublicState (m_state);
OpenPOWER on IntegriCloud