* thread.c (thread_apply_all_command): Save the command before executing it
because it may be modified. Restore the saved command so that the same command is executed on next thread. (thread_apply_command): Same correction.
This commit is contained in:
parent
165cd47f5e
commit
e35ce267f5
2 changed files with 23 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2000-11-16 Christopher Faylor <cgf@redhat.com>
|
||||||
|
|
||||||
|
* thread.c (thread_apply_all_command): Save the command before
|
||||||
|
executing it because it may be modified. Restore the saved command so
|
||||||
|
that the same command is executed on next thread.
|
||||||
|
(thread_apply_command): Same correction.
|
||||||
|
|
||||||
2000-11-16 Michael Snyder <msnyder@cleaver.cygnus.com>
|
2000-11-16 Michael Snyder <msnyder@cleaver.cygnus.com>
|
||||||
|
|
||||||
* regcache.c (read_register_bytes): Failing to set register_valid
|
* regcache.c (read_register_bytes): Failing to set register_valid
|
||||||
|
|
16
gdb/thread.c
16
gdb/thread.c
|
@ -517,6 +517,8 @@ thread_apply_all_command (char *cmd, int from_tty)
|
||||||
{
|
{
|
||||||
struct thread_info *tp;
|
struct thread_info *tp;
|
||||||
struct cleanup *old_chain;
|
struct cleanup *old_chain;
|
||||||
|
struct cleanup *saved_cmd_cleanup_chain;
|
||||||
|
char *saved_cmd;
|
||||||
|
|
||||||
if (cmd == NULL || *cmd == '\000')
|
if (cmd == NULL || *cmd == '\000')
|
||||||
error ("Please specify a command following the thread ID list");
|
error ("Please specify a command following the thread ID list");
|
||||||
|
@ -527,6 +529,10 @@ thread_apply_all_command (char *cmd, int from_tty)
|
||||||
traversing it for "thread apply all". MVS */
|
traversing it for "thread apply all". MVS */
|
||||||
target_find_new_threads ();
|
target_find_new_threads ();
|
||||||
|
|
||||||
|
/* Save a copy of the command in case it is clobbered by
|
||||||
|
execute_command */
|
||||||
|
saved_cmd = strdup (cmd);
|
||||||
|
saved_cmd_cleanup_chain = make_cleanup (free, (void *) saved_cmd);
|
||||||
for (tp = thread_list; tp; tp = tp->next)
|
for (tp = thread_list; tp; tp = tp->next)
|
||||||
if (thread_alive (tp))
|
if (thread_alive (tp))
|
||||||
{
|
{
|
||||||
|
@ -540,8 +546,10 @@ thread_apply_all_command (char *cmd, int from_tty)
|
||||||
target_pid_to_str (inferior_pid));
|
target_pid_to_str (inferior_pid));
|
||||||
#endif
|
#endif
|
||||||
execute_command (cmd, from_tty);
|
execute_command (cmd, from_tty);
|
||||||
|
strcpy (cmd, saved_cmd); /* Restore exact command used previously */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do_cleanups (saved_cmd_cleanup_chain);
|
||||||
do_cleanups (old_chain);
|
do_cleanups (old_chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -551,6 +559,8 @@ thread_apply_command (char *tidlist, int from_tty)
|
||||||
char *cmd;
|
char *cmd;
|
||||||
char *p;
|
char *p;
|
||||||
struct cleanup *old_chain;
|
struct cleanup *old_chain;
|
||||||
|
struct cleanup *saved_cmd_cleanup_chain;
|
||||||
|
char *saved_cmd;
|
||||||
|
|
||||||
if (tidlist == NULL || *tidlist == '\000')
|
if (tidlist == NULL || *tidlist == '\000')
|
||||||
error ("Please specify a thread ID list");
|
error ("Please specify a thread ID list");
|
||||||
|
@ -562,6 +572,10 @@ thread_apply_command (char *tidlist, int from_tty)
|
||||||
|
|
||||||
old_chain = make_cleanup_restore_current_thread (inferior_pid);
|
old_chain = make_cleanup_restore_current_thread (inferior_pid);
|
||||||
|
|
||||||
|
/* Save a copy of the command in case it is clobbered by
|
||||||
|
execute_command */
|
||||||
|
saved_cmd = strdup (cmd);
|
||||||
|
saved_cmd_cleanup_chain = make_cleanup (free, (void *) saved_cmd);
|
||||||
while (tidlist < cmd)
|
while (tidlist < cmd)
|
||||||
{
|
{
|
||||||
struct thread_info *tp;
|
struct thread_info *tp;
|
||||||
|
@ -608,10 +622,12 @@ thread_apply_command (char *tidlist, int from_tty)
|
||||||
target_pid_to_str (inferior_pid));
|
target_pid_to_str (inferior_pid));
|
||||||
#endif
|
#endif
|
||||||
execute_command (cmd, from_tty);
|
execute_command (cmd, from_tty);
|
||||||
|
strcpy (cmd, saved_cmd); /* Restore exact command used previously */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do_cleanups (saved_cmd_cleanup_chain);
|
||||||
do_cleanups (old_chain);
|
do_cleanups (old_chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue