* 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>
|
||||
|
||||
* 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 cleanup *old_chain;
|
||||
struct cleanup *saved_cmd_cleanup_chain;
|
||||
char *saved_cmd;
|
||||
|
||||
if (cmd == NULL || *cmd == '\000')
|
||||
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 */
|
||||
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)
|
||||
if (thread_alive (tp))
|
||||
{
|
||||
|
@ -540,8 +546,10 @@ thread_apply_all_command (char *cmd, int from_tty)
|
|||
target_pid_to_str (inferior_pid));
|
||||
#endif
|
||||
execute_command (cmd, from_tty);
|
||||
strcpy (cmd, saved_cmd); /* Restore exact command used previously */
|
||||
}
|
||||
|
||||
do_cleanups (saved_cmd_cleanup_chain);
|
||||
do_cleanups (old_chain);
|
||||
}
|
||||
|
||||
|
@ -551,6 +559,8 @@ thread_apply_command (char *tidlist, int from_tty)
|
|||
char *cmd;
|
||||
char *p;
|
||||
struct cleanup *old_chain;
|
||||
struct cleanup *saved_cmd_cleanup_chain;
|
||||
char *saved_cmd;
|
||||
|
||||
if (tidlist == NULL || *tidlist == '\000')
|
||||
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);
|
||||
|
||||
/* 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)
|
||||
{
|
||||
struct thread_info *tp;
|
||||
|
@ -608,10 +622,12 @@ thread_apply_command (char *tidlist, int from_tty)
|
|||
target_pid_to_str (inferior_pid));
|
||||
#endif
|
||||
execute_command (cmd, from_tty);
|
||||
strcpy (cmd, saved_cmd); /* Restore exact command used previously */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
do_cleanups (saved_cmd_cleanup_chain);
|
||||
do_cleanups (old_chain);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue