Author: gclayton Date: Wed Feb 5 15:46:20 2014 New Revision: 200882 URL: http://llvm.org/viewvc/llvm-project?rev=200882&view=rev Log: Don't print out "script" results twice.
We now properly detect when a result object has an immediate output stream and don't echo the results a second time. <rdar://problem/15954906> Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=200882&r1=200881&r2=200882&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original) +++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Wed Feb 5 15:46:20 2014 @@ -2648,7 +2648,7 @@ CommandInterpreter::HandleCommandsFromFi if (flags & eHandleCommandFlagPrintResult) { - m_debugger.GetOutputFile()->Printf("Executing commands in '%s'.\n", cmd_file_path.c_str()); + debugger.GetOutputFile()->Printf("Executing commands in '%s'.\n", cmd_file_path.c_str()); } // Used for inheriting the right settings when "command source" might have @@ -2661,21 +2661,31 @@ CommandInterpreter::HandleCommandsFromFi empty_stream_sp, // Pass in an empty stream so we inherit the top input reader error stream flags, NULL, // Pass in NULL for "editline_name" so no history is saved, or written - m_debugger.GetPrompt(), + debugger.GetPrompt(), false, // Not multi-line *this)); + const bool old_async_execution = debugger.GetAsyncExecution(); + + // Set synchronous execution if we not stopping when we continue + if ((flags & eHandleCommandFlagStopOnContinue) == 0) + debugger.SetAsyncExecution (false); + m_command_source_depth++; - m_debugger.RunIOHandler(io_handler_sp); + + debugger.RunIOHandler(io_handler_sp); if (!m_command_source_flags.empty()) m_command_source_flags.pop_back(); m_command_source_depth--; result.SetStatus (eReturnStatusSuccessFinishNoResult); + debugger.SetAsyncExecution (old_async_execution); } else { result.AppendErrorWithFormat ("error: an error occurred read file '%s': %s\n", cmd_file_path.c_str(), error.AsCString()); result.SetStatus (eReturnStatusFailed); } + + } else { @@ -2990,14 +3000,20 @@ CommandInterpreter::IOHandlerInputComple // Display any STDOUT/STDERR _prior_ to emitting the command result text GetProcessOutput (); - const char *output = result.GetOutputData(); - if (output && output[0]) - io_handler.GetOutputStreamFile()->PutCString(output); + if (!result.GetImmediateOutputStream()) + { + const char *output = result.GetOutputData(); + if (output && output[0]) + io_handler.GetOutputStreamFile()->PutCString(output); + } // Now emit the command error text from the command we just executed - const char *error = result.GetErrorData(); - if (error && error[0]) - io_handler.GetErrorStreamFile()->PutCString(error); + if (!result.GetImmediateErrorStream()) + { + const char *error = result.GetErrorData(); + if (error && error[0]) + io_handler.GetErrorStreamFile()->PutCString(error); + } } switch (result.GetStatus()) _______________________________________________ lldb-commits mailing list lldb-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits