Thread Plans pushed by a scripted plan should be private plans.
If a plan is not private, "thread plan discard" can discard it. It would
not be hard to write reliable scripted plan if its subplans could get
removed out from under it.
diff --git a/lldb/source/API/SBThreadPlan.cpp b/lldb/source/API/SBThreadPlan.cpp
index b93c317..1a947bb 100644
--- a/lldb/source/API/SBThreadPlan.cpp
+++ b/lldb/source/API/SBThreadPlan.cpp
@@ -237,7 +237,9 @@
if (plan_status.Fail())
error.SetErrorString(plan_status.AsCString());
-
+ else
+ plan.m_opaque_sp->SetPrivate(true);
+
return LLDB_RECORD_RESULT(plan);
} else {
return LLDB_RECORD_RESULT(SBThreadPlan());
@@ -281,6 +283,8 @@
if (plan_status.Fail())
error.SetErrorString(plan_status.AsCString());
+ else
+ plan.m_opaque_sp->SetPrivate(true);
return LLDB_RECORD_RESULT(plan);
} else {
@@ -321,6 +325,8 @@
if (plan_status.Fail())
error.SetErrorString(plan_status.AsCString());
+ else
+ plan.m_opaque_sp->SetPrivate(true);
return LLDB_RECORD_RESULT(plan);
} else {
@@ -356,6 +362,8 @@
if (plan_status.Fail())
error.SetErrorString(plan_status.AsCString());
+ else
+ plan.m_opaque_sp->SetPrivate(true);
return LLDB_RECORD_RESULT(plan);
} else {
@@ -390,6 +398,8 @@
if (plan_status.Fail())
error.SetErrorString(plan_status.AsCString());
+ else
+ plan.m_opaque_sp->SetPrivate(true);
return LLDB_RECORD_RESULT(plan);
} else {
@@ -415,6 +425,8 @@
if (plan_status.Fail())
error.SetErrorString(plan_status.AsCString());
+ else
+ plan.m_opaque_sp->SetPrivate(true);
return LLDB_RECORD_RESULT(plan);
} else {