OSDN Git Service

When closing a file, call closedir if we called opendir.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Jan 2011 00:01:08 +0000 (00:01 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Jan 2011 00:01:08 +0000 (00:01 +0000)
Fixes Go issue 1448.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@169344 138bc75d-0d04-0410-961f-82ee72b054a4

libgo/go/os/file_unix.go

index aa322c9..57d4a47 100644 (file)
@@ -47,6 +47,13 @@ func (file *File) Close() Error {
        if e := syscall.Close(file.fd); e != 0 {
                err = &PathError{"close", file.name, Errno(e)}
        }
+
+       if file.dirinfo != nil {
+               if libc_closedir(file.dirinfo.dir) < 0  && err == nil {
+                       err = &PathError{"closedir", file.name, Errno(syscall.GetErrno())}
+               }
+       }
+
        file.fd = -1 // so it can't be closed again
 
        // no need for a finalizer anymore