Add code to make sure InputReaders finish and are cleaned up when
a Debugger object is destroyed or re-set. (Thus making sure that, for example, the Python interpreter finishes and exits cleanly rather than being left in an undefined state.) llvm-svn: 122255
This commit is contained in:
parent
64c2c5798a
commit
3d6086f628
|
@ -372,6 +372,9 @@ public:
|
||||||
const char **end);
|
const char **end);
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CleanUpInputReaders ();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -59,6 +59,9 @@ SBDebugger::Clear ()
|
||||||
if (log)
|
if (log)
|
||||||
log->Printf ("SBDebugger(%p)::Clear ()", m_opaque_sp.get());
|
log->Printf ("SBDebugger(%p)::Clear ()", m_opaque_sp.get());
|
||||||
|
|
||||||
|
if (m_opaque_sp)
|
||||||
|
m_opaque_sp->CleanUpInputReaders ();
|
||||||
|
|
||||||
m_opaque_sp.reset();
|
m_opaque_sp.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -184,6 +184,7 @@ Debugger::Debugger () :
|
||||||
|
|
||||||
Debugger::~Debugger ()
|
Debugger::~Debugger ()
|
||||||
{
|
{
|
||||||
|
CleanUpInputReaders();
|
||||||
int num_targets = m_target_list.GetNumTargets();
|
int num_targets = m_target_list.GetNumTargets();
|
||||||
for (int i = 0; i < num_targets; i++)
|
for (int i = 0; i < num_targets; i++)
|
||||||
{
|
{
|
||||||
|
@ -389,6 +390,24 @@ Debugger::DispatchInputEndOfFile ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Debugger::CleanUpInputReaders ()
|
||||||
|
{
|
||||||
|
m_input_reader_data.clear();
|
||||||
|
|
||||||
|
while (m_input_readers.size() > 1)
|
||||||
|
{
|
||||||
|
while (CheckIfTopInputReaderIsDone ()) ;
|
||||||
|
|
||||||
|
InputReaderSP reader_sp (m_input_readers.top());
|
||||||
|
if (reader_sp)
|
||||||
|
{
|
||||||
|
reader_sp->Notify (eInputReaderEndOfFile);
|
||||||
|
reader_sp->SetIsDone (true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Debugger::WriteToDefaultReader (const char *bytes, size_t bytes_len)
|
Debugger::WriteToDefaultReader (const char *bytes, size_t bytes_len)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue