This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] Code cleanup: Stream should be deleted where it got created
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Tue, 24 Jan 2012 20:52:58 +0100
- Subject: [patch] Code cleanup: Stream should be deleted where it got created
Hi,
I find it an obvious cleanup, I got a bug in new code due to it. If one
passes FILE * to some function acting on it one does not expect the function
would also close it. It makes all the error recovery cleanups too magic
otherwise.
No regressions on {x86_64,x86_64-m32,i686}-fedorarawhide-linux-gnu.
Thanks,
Jan
gdb/
2012-01-24 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup.
* cli/cli-cmds.c (source_script_from_stream): Never fclose STREAM.
Update the function comment for it.
(source_script_with_search): Call make_cleanup_fclose for STREAM.
* cli/cli-script.c (script_from_file): Do not call make_cleanup_fclose
for STREAM.
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -527,8 +527,7 @@ find_and_open_script (const char *script_file, int search_path,
return 1;
}
-/* Load script FILE, which has already been opened as STREAM.
- STREAM is closed before we return. */
+/* Load script FILE, which has already been opened as STREAM. */
static void
source_script_from_stream (FILE *stream, const char *file)
@@ -554,12 +553,9 @@ source_script_from_stream (FILE *stream, const char *file)
else
{
/* Nope, just punt. */
- fclose (stream);
throw_exception (e);
}
}
- else
- fclose (stream);
}
else
script_from_file (stream, file);
@@ -593,6 +589,7 @@ source_script_with_search (const char *file, int from_tty, int search_path)
}
old_cleanups = make_cleanup (xfree, full_path);
+ make_cleanup_fclose (stream);
/* The python support reopens the file, so we need to pass full_path here
in case the file was found on the search path. It's useful to do this
anyway so that error messages show the actual file used. But only do
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -1614,11 +1614,9 @@ script_from_file (FILE *stream, const char *file)
if (stream == NULL)
internal_error (__FILE__, __LINE__, _("called with NULL file pointer!"));
- old_cleanups = make_cleanup_fclose (stream);
-
old_lines.old_line = source_line_number;
old_lines.old_file = source_file_name;
- make_cleanup (source_cleanup_lines, &old_lines);
+ old_cleanups = make_cleanup (source_cleanup_lines, &old_lines);
source_line_number = 0;
source_file_name = file;
/* This will get set every time we read a line. So it won't stay ""