Don't cache the public stop reason, since it can change as plan completion gets processed.  That means GetStopReason needs to return a shared pointer, not a pointer to the thread's cached version.  Also allow the thread plans to get and set the thread private stop reason - that is usually more appropriate for the logic the thread plans need to do.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116892 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Expression/ClangFunction.cpp b/source/Expression/ClangFunction.cpp
index dfb663e..b7f3d0d 100644
--- a/source/Expression/ClangFunction.cpp
+++ b/source/Expression/ClangFunction.cpp
@@ -662,10 +662,10 @@
                         else
                             ts.Printf("[ip unknown] ");
                         
-                        StopInfo *stop_info = thread->GetStopInfo();
-                        if (stop_info)
+                        lldb::StopInfoSP stop_info_sp = thread->GetStopInfo();
+                        if (stop_info_sp)
                         {
-                            const char *stop_desc = stop_info->GetDescription();
+                            const char *stop_desc = stop_info_sp->GetDescription();
                             if (stop_desc)
                                 ts.PutCString (stop_desc);
                         }