diff options
author | Pedro Alves <palves@redhat.com> | 2016-03-09 18:25:00 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2016-03-09 18:25:00 +0000 |
commit | 2669cade3dcebf5d572bcd535cf21934cbc1633c (patch) | |
tree | 4b4de5e2d89d3cf97ca0da1a53d4154ce9d7fa7b /gdb | |
parent | 187212b3c1aa55d9a5b544a6af3af0b5ce457403 (diff) | |
download | gdb-2669cade3dcebf5d572bcd535cf21934cbc1633c.zip gdb-2669cade3dcebf5d572bcd535cf21934cbc1633c.tar.gz gdb-2669cade3dcebf5d572bcd535cf21934cbc1633c.tar.bz2 |
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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 12 | ||||
-rw-r--r-- | gdb/event-top.c | 9 | ||||
-rw-r--r-- | gdb/main.c | 3 | ||||
-rw-r--r-- | gdb/top.c | 15 | ||||
-rw-r--r-- | gdb/top.h | 1 |
5 files changed, 19 insertions, 21 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 881d231..bc2e99e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,17 @@ 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. (gdb_readline_no_editing_callback): Use struct buffer instead of xrealloc. diff --git a/gdb/event-top.c b/gdb/event-top.c index 8857235..f112c52 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -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); @@ -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__ @@ -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; } @@ -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; |