diff options
author | Ranjit Mathew <rmathew@hotmail.com> | 2003-02-11 20:55:26 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2003-02-11 20:55:26 +0000 |
commit | 668ec0830302d6b3a27c4cd2801d275cefbd7f31 (patch) | |
tree | 196bbfac0647b20519f37aa802fdc04deb3660f1 /libjava/java/io | |
parent | 2026dcf90abe91054e63d3556e0f33e098e08324 (diff) | |
download | gcc-668ec0830302d6b3a27c4cd2801d275cefbd7f31.zip gcc-668ec0830302d6b3a27c4cd2801d275cefbd7f31.tar.gz gcc-668ec0830302d6b3a27c4cd2801d275cefbd7f31.tar.bz2 |
2003-02-11 Ranjit Mathew <rmathew@hotmail.com>
* java/io/natFileDescriptorWin32.cc
(java::io::FileDescriptor::read): Return -1 (EOF) if ReadFile( )
returns with Win32 error code ERROR_BROKEN_PIPE.
From-SVN: r62722
Diffstat (limited to 'libjava/java/io')
-rw-r--r-- | libjava/java/io/natFileDescriptorWin32.cc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/libjava/java/io/natFileDescriptorWin32.cc b/libjava/java/io/natFileDescriptorWin32.cc index 4b157f7..87f94e8 100644 --- a/libjava/java/io/natFileDescriptorWin32.cc +++ b/libjava/java/io/natFileDescriptorWin32.cc @@ -1,6 +1,7 @@ // natFileDescriptorWin32.cc - Native part of FileDescriptor class. -/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software + Foundation, Inc. This file is part of libgcj. @@ -288,7 +289,13 @@ java::io::FileDescriptor::read(void) DWORD read; if (! ReadFile ((HANDLE)fd, &buf, 1, &read, NULL)) - throw new IOException (JvNewStringLatin1 (winerr ())); + { + if (GetLastError () == ERROR_BROKEN_PIPE) + return -1; + else + throw new IOException (JvNewStringLatin1 (winerr ())); + } + if (! read) return -1; else @@ -313,9 +320,15 @@ java::io::FileDescriptor::read(jbyteArray buffer, jint offset, jint count) DWORD read; if (! ReadFile((HANDLE)fd, bytes, count, &read, NULL)) - throw new IOException (JvNewStringLatin1 (winerr ())); + { + if (GetLastError () == ERROR_BROKEN_PIPE) + return -1; + else + throw new IOException (JvNewStringLatin1 (winerr ())); + } if (read == 0) return -1; + return (jint)read; } |