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
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits