diff options
author | Robert Dewar <dewar@adacore.com> | 2006-02-17 17:07:10 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2006-02-17 17:07:10 +0100 |
commit | 0e3e1f1559c7608c6b736fe9c6d30c07425dfd83 (patch) | |
tree | 804e9e64b2a5e7fe5ad8d29faf2e4a2b96cb5ae0 /gcc/ada/g-os_lib.adb | |
parent | 7f9747c61d1bac65d73216c41b83db17cb861561 (diff) | |
download | gcc-0e3e1f1559c7608c6b736fe9c6d30c07425dfd83.tar.gz |
g-os_lib.adb (Copy_File): Make sure that if From has an Invalid_FD, then we close To if it is valid.
2006-02-17 Robert Dewar <dewar@adacore.com>
* g-os_lib.adb (Copy_File): Make sure that if From has an Invalid_FD,
then we close To if it is valid.
From-SVN: r111188
Diffstat (limited to 'gcc/ada/g-os_lib.adb')
-rw-r--r-- | gcc/ada/g-os_lib.adb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ada/g-os_lib.adb b/gcc/ada/g-os_lib.adb index dbfc6b91745..c1efa039092 100644 --- a/gcc/ada/g-os_lib.adb +++ b/gcc/ada/g-os_lib.adb @@ -384,7 +384,14 @@ package body GNAT.OS_Lib is procedure Free is new Unchecked_Deallocation (Buf, Buf_Ptr); begin + -- Check for invalid descriptors, making sure that we do not + -- accidentally leave an open file descriptor around. + if From = Invalid_FD then + if To /= Invalid_FD then + Close (To, Status_To); + end if; + raise Copy_Error; elsif To = Invalid_FD then |