Re: [patch] find_and_open_script: Fix failed fdopen

Jan Kratochvil
2012-01-23T16:18:11Z

On Mon, 23 Jan 2012 17:09:17 +0100, Pedro Alves wrote:
> On 01/23/2012 04:03 PM, Jan Kratochvil wrote:
> > @@ -513,6 +513,17 @@ find_and_open_script (const char *script_file, int search_path,
> > do_cleanups (old_cleanups);
> >
> > *streamp = fdopen (fd, FOPEN_RT);
> > + if (*streamp == NULL)
> > + {
> > + int save_errno = errno;
> > +
> > + if (full_pathp)
> > + xfree (*full_pathp);
> > + do_cleanups (old_cleanups);
>
> This do_cleanups doesn't look right. From the patch context, there's
> already do_cleanups(old_cleanups) call a bit above.

Oops, thanks. Also missing close there.

Regards,
Jan

gdb/
2012-01-23 Jan Kratochvil <jan.kratochvil@redhat.com>

* cli/cli-cmds.c (find_and_open_script): Handle failure of fdopen.

--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -513,6 +513,17 @@ find_and_open_script (const char *script_file, int search_path,
do_cleanups (old_cleanups);

*streamp = fdopen (fd, FOPEN_RT);
+ if (*streamp == NULL)
+ {
+ int save_errno = errno;
+
+ close (fd);
+ if (full_pathp)
+ xfree (*full_pathp);
+ errno = save_errno;
+ return 0;
+ }
+
return 1;
}