/* Helper for set_running, that marks one thread either running or
stopped. */
-static int
-set_running_thread (struct thread_info *tp, int running)
+static bool
+set_running_thread (struct thread_info *tp, bool running)
{
- int started = 0;
+ bool started = false;
if (running && tp->state == THREAD_STOPPED)
- started = 1;
+ started = true;
tp->state = running ? THREAD_RUNNING : THREAD_STOPPED;
if (!running)
&& m_inf->pid != 0)
switch_to_thread (m_thread);
else
- {
- switch_to_no_thread ();
- set_current_inferior (m_inf);
- }
+ switch_to_inferior_no_thread (m_inf);
/* The running state of the originally selected thread may have
changed, so we have to recheck it here. */
const qcs_flags &flags)
{
switch_to_thread (thr);
+
+ /* The thread header is computed before running the command since
+ the command can change the inferior, which is not permitted
+ by thread_target_id_str. */
+ std::string thr_header =
+ string_printf (_("\nThread %s (%s):\n"), print_thread_id (thr),
+ thread_target_id_str (thr).c_str ());
+
try
{
std::string cmd_result = execute_command_to_string
if (!flags.silent || cmd_result.length () > 0)
{
if (!flags.quiet)
- printf_filtered (_("\nThread %s (%s):\n"),
- print_thread_id (thr),
- target_pid_to_str (inferior_ptid).c_str ());
+ printf_filtered ("%s", thr_header.c_str ());
printf_filtered ("%s", cmd_result.c_str ());
}
}
if (!flags.silent)
{
if (!flags.quiet)
- printf_filtered (_("\nThread %s (%s):\n"),
- print_thread_id (thr),
- target_pid_to_str (inferior_ptid).c_str ());
+ printf_filtered ("%s", thr_header.c_str ());
if (flags.cont)
printf_filtered ("%s\n", ex.what ());
else