[libgfortran] Fix uninitialized variable use in fallback_access
commitd6f08481b479c4ce630cbba52fff58aba578cddd
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Sep 2018 09:22:01 +0000 (14 09:22 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 14 Sep 2018 09:22:01 +0000 (14 09:22 +0000)
treeb69851d448758d64451837fb961a0bbf073c1922
parent2ab0b41696e32da3ed74347a49ca76df3b705eda
[libgfortran] Fix uninitialized variable use in fallback_access

I've been tracking down a bug in a Fortran program on a newlib target and it boils down to fallback_access doing something bad.
The unconditional calls to close cause havoc when open doesn't get called due to the short-circuiting in the if-statement above
because the fd is uninitialised. In my environment GCC ends up calling close on file descriptor 0, thus trying to close stdin.

This patch tightens up the calling so that close is called only when the corresponding open call succeeded.
With this my runtime failure disappears.

Bootstrapped and tested on aarch64-none-linux-gnu.
Though that doesn't exercise this call I hope it's an obviously correct change.

* io/unix.c (fallback_access): Avoid calling close on
uninitialized file descriptor.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@264305 138bc75d-0d04-0410-961f-82ee72b054a4
libgfortran/ChangeLog
libgfortran/io/unix.c