From e28493f22671b9acb23366572cfba9dd5ed13a8d Mon Sep 17 00:00:00 2001 From: Andrew Stubbs Date: Fri, 7 Apr 2006 13:31:15 +0000 Subject: 2006-04-07 Andrew Stubbs gdb/ * cli/cli-script.c (struct user_args): Add command field. (arg_cleanup): Free command string. (setup_user_args): Copy the command line before relying on it. gdb/testsuite/ * gdb.base/commands.exp (recursive_source_test): New test. --- gdb/cli/cli-script.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gdb/cli') diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index b447b44..4f44477 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -54,6 +54,9 @@ static int control_level; struct user_args { struct user_args *next; + /* It is necessary to store a malloced copy of the command line to + ensure that the arguments are not overwritten before they are used. */ + char *command; struct { char *arg; @@ -483,6 +486,7 @@ arg_cleanup (void *ignore) _("arg_cleanup called with no user args.\n")); user_args = user_args->next; + xfree (oargs->command); xfree (oargs); } @@ -507,6 +511,8 @@ setup_user_args (char *p) if (p == NULL) return old_chain; + user_args->command = p = xstrdup (p); + while (*p) { char *start_arg; -- cgit v1.1