Fixed memory management issues introduced by revision 157507. 

A local std::string was being filled in and then the function would return "s.c_str()".
A local StreamString (which contains a std::string) was being filled in, and essentially also returning the c string from the std::string, though it was in a the StreamString class.

The fix was to not do this by passing a stream object into StringList::Join() and fix the "arch_helper()" function to do what it should: cache the result in a global.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@157519 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Interpreter/CommandObject.cpp b/source/Interpreter/CommandObject.cpp
index c86bb5e..af9aa39 100644
--- a/source/Interpreter/CommandObject.cpp
+++ b/source/Interpreter/CommandObject.cpp
@@ -849,12 +849,15 @@
 static
 const char *arch_helper()
 {
-    StringList archs;
-    ArchSpec::AutoComplete(NULL, archs);
-    StreamString ss;
-    ss.Printf("These are the supported architecture names:\n");
-    ss.Printf("%s\n", archs.Join("\n"));
-    return ss.GetData();
+    static StreamString g_archs_help;
+    if (g_archs_help.GetData() == NULL)
+    {
+        StringList archs;
+        ArchSpec::AutoComplete(NULL, archs);
+        g_archs_help.Printf("These are the supported architecture names:\n");
+        archs.Join("%s\n", g_archs_help);
+    }
+    return g_archs_help.GetData();
 }
 
 CommandObject::ArgumentTableEntry