No longer pass a StringRef to the Python API
authorRaphael Isemann <teemperor@gmail.com>
Fri, 13 Jul 2018 18:13:46 +0000 (18:13 +0000)
committerRaphael Isemann <teemperor@gmail.com>
Fri, 13 Jul 2018 18:13:46 +0000 (18:13 +0000)
Summary:
The refactoring patch for DoExecute missed this case of a variadic function that just silently
accepts a StringRef which it then tries to reinterpret as a C-string.

This should fix the Windows builds.

Reviewers: stella.stamenova

Reviewed By: stella.stamenova

Subscribers: lldb-commits

Differential Revision: https://reviews.llvm.org/D49309

llvm-svn: 337030

lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp

index e115057db8c9463cd6b4f6ea5cf569e92725d1c1..12cadff935194d3be7d241ad261fec4793b6a68d 100644 (file)
@@ -753,6 +753,8 @@ static void ReadThreadBytesReceived(void *baton, const void *src,
 bool ScriptInterpreterPython::ExecuteOneLine(
     llvm::StringRef command, CommandReturnObject *result,
     const ExecuteScriptOptions &options) {
+  std::string command_str = command.str();
+
   if (!m_valid_session)
     return false;
 
@@ -855,7 +857,7 @@ bool ScriptInterpreterPython::ExecuteOneLine(
           if (PyCallable_Check(m_run_one_line_function.get())) {
             PythonObject pargs(
                 PyRefType::Owned,
-                Py_BuildValue("(Os)", session_dict.get(), command));
+                Py_BuildValue("(Os)", session_dict.get(), command_str.c_str()));
             if (pargs.IsValid()) {
               PythonObject return_value(
                   PyRefType::Owned,
@@ -895,7 +897,6 @@ bool ScriptInterpreterPython::ExecuteOneLine(
 
     // The one-liner failed.  Append the error message.
     if (result) {
-      std::string command_str = command.str();
       result->AppendErrorWithFormat(
           "python failed attempting to evaluate '%s'\n", command_str.c_str());
     }