Simplify saved_command_line handling

There doesn't seem to be much point in trying to reuse this buffer.
Prefer simplicity instead.

(In case you're wondering whether this fixes an off-by-one: linelength
is misnamed; it's really a size including terminating null char.)

gdb/ChangeLog:
2016-03-09  Pedro Alves  <palves@redhat.com>

	* event-top.c (command_line_handler): Use xfree + xstrdup instead
	of xrealloc + strcpy.
	* main.c (captured_main): Use xstrdup instead of xmalloc plus
	manual clear.
	* top.c (saved_command_line): Rewrite comment.
	(saved_command_line_size): Delete.
	(command_line_input): Use xfree + xstrdup instead of xrealloc +
	strcpy.
	* top.h (saved_command_line_size): Delete declaration.
This commit is contained in:
Pedro Alves 2016-03-09 18:25:00 +00:00
parent 187212b3c1
commit 2669cade3d
5 changed files with 19 additions and 21 deletions

View File

@ -1,3 +1,15 @@
2016-03-09 Pedro Alves <palves@redhat.com>
* event-top.c (command_line_handler): Use xfree + xstrdup instead
of xrealloc + strcpy.
* main.c (captured_main): Use xstrdup instead of xmalloc plus
manual clear.
* top.c (saved_command_line): Rewrite comment.
(saved_command_line_size): Delete.
(command_line_input): Use xfree + xstrdup instead of xrealloc +
strcpy.
* top.h (saved_command_line_size): Delete declaration.
2016-03-09 Pedro Alves <palves@redhat.com>
* event-top.c: Include buffer.h.

View File

@ -650,13 +650,8 @@ command_line_handler (char *rl)
/* Save into global buffer if appropriate. */
if (repeat)
{
if (linelength > saved_command_line_size)
{
saved_command_line
= (char *) xrealloc (saved_command_line, linelength);
saved_command_line_size = linelength;
}
strcpy (saved_command_line, linebuffer);
xfree (saved_command_line);
saved_command_line = xstrdup (linebuffer);
if (!more_to_come)
{
command_handler (saved_command_line);

View File

@ -506,8 +506,7 @@ captured_main (void *data)
ndir = 0;
clear_quit_flag ();
saved_command_line = (char *) xmalloc (saved_command_line_size);
saved_command_line[0] = '\0';
saved_command_line = (char *) xstrdup ("");
instream = stdin;
#ifdef __MINGW32__

View File

@ -125,11 +125,9 @@ char *current_directory;
/* The directory name is actually stored here (usually). */
char gdb_dirbuf[1024];
/* Buffer used for reading command lines, and the size
allocated for it so far. */
/* The last command line executed on the console. Used for command
repetitions. */
char *saved_command_line;
int saved_command_line_size = 100;
/* Nonzero if the current command is modified by "server ". This
affects things like recording into the command history, commands
@ -1222,13 +1220,8 @@ command_line_input (const char *prompt_arg, int repeat, char *annotation_suffix)
/* Save into global buffer if appropriate. */
if (repeat)
{
if (linelength > saved_command_line_size)
{
saved_command_line
= (char *) xrealloc (saved_command_line, linelength);
saved_command_line_size = linelength;
}
strcpy (saved_command_line, linebuffer);
xfree (saved_command_line);
saved_command_line = xstrdup (linebuffer);
return saved_command_line;
}

View File

@ -22,7 +22,6 @@
/* From top.c. */
extern char *saved_command_line;
extern int saved_command_line_size;
extern FILE *instream;
extern int in_user_command;
extern int confirm;