[pushed] Plug source_command leak

Message ID 1503010700-25096-1-git-send-email-palves@redhat.com
State New, archived
Headers

Commit Message

Pedro Alves Aug. 17, 2017, 10:58 p.m. UTC
  The heap-allocated 'old_source_verbose' local was accidentally left
behind by commit 2ec845e75876 ("More uses of scoped_restore").

Valgrind caught it, like:

 ==20123== 8 bytes in 1 blocks are definitely lost in loss record 4,609 of 13,785
 ==20123==    at 0x4C2A988: calloc (vg_replace_malloc.c:711)
 ==20123==    by 0x60A2F8: xcalloc (common-utils.c:84)
 ==20123==    by 0x4CDBE5: build_command_line(command_control_type, char const*) (cli-script.c:159)
 ==20123==    by 0x4CDC32: get_command_line(command_control_type, char const*) (cli-script.c:172)
 ==20123==    by 0x5230F1: python_command(char*, int) (python.c:421)
 ==20123==    by 0x4C61AD: do_cfunc(cmd_list_element*, char*, int) (cli-decode.c:106)
 ==20123==    by 0x4C911F: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1902)
 ==20123==    by 0x7CA79E: execute_command(char*, int) (top.c:650)
 ==20123==    by 0x695A0C: command_handler(char*) (event-top.c:590)
 ==20123==    by 0x7CA33F: read_command_file(_IO_FILE*) (top.c:461)
 ==20123==    by 0x4D0C3A: script_from_file(_IO_FILE*, char const*) (cli-script.c:1584)
 ==20123==    by 0x4C2727: source_script_from_stream(_IO_FILE*, char const*, char const*) (cli-cmds.c:589)

gdb/ChangeLog:
2017-08-17  Pedro Alves  <palves@redhat.com>

	* cli/cli-cmds.c (source_command): Delete 'old_source_verbose'
	local.
---
 gdb/ChangeLog      | 5 +++++
 gdb/cli/cli-cmds.c | 1 -
 2 files changed, 5 insertions(+), 1 deletion(-)
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 50b7237..083e312 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@ 
 2017-08-17  Pedro Alves  <palves@redhat.com>
 
+	* cli/cli-cmds.c (source_command): Delete 'old_source_verbose'
+	local.
+
+2017-08-17  Pedro Alves  <palves@redhat.com>
+
 	* dwarf2read.c (struct dwarf2_cu) <line_header_die_owner>: New
 	field.
 	(reset_die_in_process): Delete, replaced by ...
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index d3ec4ae..3fa2499 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -639,7 +639,6 @@  static void
 source_command (char *args, int from_tty)
 {
   char *file = args;
-  int *old_source_verbose = XNEW (int);
   int search_path = 0;
 
   scoped_restore save_source_verbose = make_scoped_restore (&source_verbose);