Blob Blame History Raw
http://sourceware.org/ml/gdb-cvs/2012-03/msg00236.html

### src/gdb/ChangeLog	2012/03/19 18:19:23	1.14027
### src/gdb/ChangeLog	2012/03/19 18:23:51	1.14028
## -1,5 +1,13 @@
 2012-03-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
+	Code cleanup.
+	* python/py-auto-load.c (source_section_scripts): New variable back_to.
+	Turn fclose and xfree calls into make_cleanup_fclose and make_cleanup
+	with xfree.
+	(auto_load_objfile_script): Turn fclose into make_cleanup_fclose.
+
+2012-03-19  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
 	* NEWS: Describe new options --init-command=FILE, -ix and
 	--init-eval-command=COMMAND, -iex.
 	* main.c (struct cmdarg): New enum items CMDARG_INIT_FILE and
Index: gdb-7.3.50.20110722/gdb/python/py-auto-load.c
===================================================================
--- gdb-7.3.50.20110722.orig/gdb/python/py-auto-load.c	2012-04-18 23:40:45.000000000 +0200
+++ gdb-7.3.50.20110722/gdb/python/py-auto-load.c	2012-04-18 23:43:59.643262382 +0200
@@ -254,6 +254,7 @@ source_section_scripts (struct objfile *
       FILE *stream;
       char *full_path;
       int opened, in_hash_table;
+      struct cleanup *back_to;
 
       if (*p != 1)
 	{
@@ -286,6 +287,13 @@ source_section_scripts (struct objfile *
       opened = find_and_open_script (file, 1 /*search_path*/,
 				     &stream, &full_path);
 
+      back_to = make_cleanup (null_cleanup, NULL);
+      if (opened)
+	{
+	  make_cleanup_fclose (stream);
+	  make_cleanup (xfree, full_path);
+	}
+
       /* If one script isn't found it's not uncommon for more to not be
 	 found either.  We don't want to print an error message for each
 	 script, too much noise.  Instead, we print the warning once and tell
@@ -313,9 +321,9 @@ Use `info auto-load-scripts [REGEXP]' to
 	  /* If this file is not currently loaded, load it.  */
 	  if (! in_hash_table)
 	    source_python_script_for_objfile (objfile, stream, full_path);
-	  fclose (stream);
-	  free (full_path);
 	}
+
+      do_cleanups (back_to);
     }
 }
 
@@ -420,6 +428,8 @@ auto_load_objfile_script (struct objfile
     {
       struct auto_load_pspace_info *pspace_info;
 
+      make_cleanup_fclose (input);
+
       /* Add this script to the hash table too so "info auto-load-scripts"
 	 can print it.  */
       pspace_info =
@@ -432,7 +442,6 @@ auto_load_objfile_script (struct objfile
 	 and these scripts are required to be idempotent under multiple
 	 loads anyway.  */
       source_python_script_for_objfile (objfile, input, debugfile);
-      fclose (input);
     }
 
   do_cleanups (cleanups);