* python/py-auto-load.c (source_section_scripts): Fix file
authorDoug Evans <dje@google.com>
Mon, 19 Sep 2011 19:01:40 +0000 (19:01 +0000)
committerDoug Evans <dje@google.com>
Mon, 19 Sep 2011 19:01:40 +0000 (19:01 +0000)
descriptor leak.
* python/python.c (source_python_script_for_objfile): Tweak comments.

gdb/ChangeLog
gdb/python/py-auto-load.c
gdb/python/python.c

index 053c6efd276c621f86e3a1e19b27843983bafd11..1b2519b0249df8710298e11f160bb929c19232fa 100644 (file)
@@ -1,3 +1,9 @@
+2011-09-19  Doug Evans  <dje@google.com>
+
+       * python/py-auto-load.c (source_section_scripts): Fix file
+       descriptor leak.
+       * python/python.c (source_python_script_for_objfile): Tweak comments.
+
 2011-09-18  Yao Qi  <yao@codesourcery.com>
            Ulrich Weigand  <ulrich.weigand@linaro.org>
 
index 158b1cbfe227aef474e740be2c382e59f6a300ff..75fa0411ad9daa68f88e92704091aee17584bc22 100644 (file)
@@ -296,9 +296,6 @@ source_section_scripts (struct objfile *objfile, const char *source_name,
       in_hash_table = maybe_add_script (pspace_info->loaded_scripts, file,
                                        opened ? full_path : NULL);
 
-      if (opened)
-       free (full_path);
-
       if (! opened)
        {
          /* We don't throw an error, the program is still debuggable.  */
@@ -310,12 +307,15 @@ Use `info auto-load-scripts [REGEXP]' to list them."),
                       GDBPY_AUTO_SECTION_NAME, objfile->name);
              pspace_info->script_not_found_warning_printed = TRUE;
            }
-         continue;
        }
-
-      /* If this file is not currently loaded, load it.  */
-      if (! in_hash_table)
-       source_python_script_for_objfile (objfile, stream, file);
+      else
+       {
+         /* If this file is not currently loaded, load it.  */
+         if (! in_hash_table)
+           source_python_script_for_objfile (objfile, stream, file);
+         fclose (stream);
+         free (full_path);
+       }
     }
 }
 
index 67649c3cd49265cfe260038a4cd6fcdf6fe04d0c..4ef5715aa9304e5cf7e27bf61df7b536d366316f 100644 (file)
@@ -903,7 +903,10 @@ gdbpy_progspaces (PyObject *unused1, PyObject *unused2)
 static struct objfile *gdbpy_current_objfile;
 
 /* Set the current objfile to OBJFILE and then read STREAM,FILE as
-   Python code.  */
+   Python code.
+   STREAM is left open, it is up to the caller to close it.
+   If an exception occurs python will print the traceback and
+   clear the error indicator.  */
 
 void
 source_python_script_for_objfile (struct objfile *objfile,
@@ -914,8 +917,6 @@ source_python_script_for_objfile (struct objfile *objfile,
   cleanups = ensure_python_env (get_objfile_arch (objfile), current_language);
   gdbpy_current_objfile = objfile;
 
-  /* Note: If an exception occurs python will print the traceback and
-     clear the error indicator.  */
   PyRun_SimpleFile (stream, file);
 
   do_cleanups (cleanups);