Use shared pointers to hold the process in ProcessMonitor
llvm-svn: 185946
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
index fe61798..ab34002 100644
--- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
+++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.cpp
@@ -923,7 +923,7 @@
/// launching or attaching to the inferior process, and then 2) servicing
/// operations such as register reads/writes, stepping, etc. See the comments
/// on the Operation class for more info as to why this is needed.
-ProcessMonitor::ProcessMonitor(ProcessPOSIX *process,
+ProcessMonitor::ProcessMonitor(ProcessPOSIXSP &process,
Module *module,
const char *argv[],
const char *envp[],
@@ -932,7 +932,7 @@
const char *stderr_path,
const char *working_dir,
lldb_private::Error &error)
- : m_process(static_cast<ProcessLinux *>(process)),
+ : m_process(static_pointer_cast<ProcessLinux>(process)),
m_operation_thread(LLDB_INVALID_HOST_THREAD),
m_monitor_thread(LLDB_INVALID_HOST_THREAD),
m_pid(LLDB_INVALID_PROCESS_ID),
@@ -988,10 +988,10 @@
}
}
-ProcessMonitor::ProcessMonitor(ProcessPOSIX *process,
+ProcessMonitor::ProcessMonitor(ProcessPOSIXSP &process,
lldb::pid_t pid,
lldb_private::Error &error)
- : m_process(static_cast<ProcessLinux *>(process)),
+ : m_process(static_pointer_cast<ProcessLinux>(process)),
m_operation_thread(LLDB_INVALID_HOST_THREAD),
m_monitor_thread(LLDB_INVALID_HOST_THREAD),
m_pid(LLDB_INVALID_PROCESS_ID),
@@ -1412,7 +1412,7 @@
{
ProcessMessage message;
ProcessMonitor *monitor = static_cast<ProcessMonitor*>(callback_baton);
- ProcessLinux *process = monitor->m_process;
+ ProcessLinux *process = monitor->m_process.get();
assert(process);
bool stop_monitoring;
siginfo_t info;
diff --git a/lldb/source/Plugins/Process/Linux/ProcessMonitor.h b/lldb/source/Plugins/Process/Linux/ProcessMonitor.h
index dfb4601..ae965ba 100644
--- a/lldb/source/Plugins/Process/Linux/ProcessMonitor.h
+++ b/lldb/source/Plugins/Process/Linux/ProcessMonitor.h
@@ -47,7 +47,7 @@
/// Launches an inferior process ready for debugging. Forms the
/// implementation of Process::DoLaunch.
- ProcessMonitor(ProcessPOSIX *process,
+ ProcessMonitor(ProcessPOSIXSP &process,
lldb_private::Module *module,
char const *argv[],
char const *envp[],
@@ -57,7 +57,7 @@
const char *working_dir,
lldb_private::Error &error);
- ProcessMonitor(ProcessPOSIX *process,
+ ProcessMonitor(ProcessPOSIXSP &process,
lldb::pid_t pid,
lldb_private::Error &error);
@@ -182,7 +182,7 @@
StopThread(lldb::tid_t tid);
private:
- ProcessLinux *m_process;
+ std::shared_ptr<ProcessLinux> m_process;
lldb::thread_t m_operation_thread;
lldb::thread_t m_monitor_thread;