Changeset 373
- Timestamp:
- May 31, 2012, 5:49:53 PM (13 years ago)
- Location:
- trunk/openjdk/jdk/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/openjdk/jdk/src/share/native/java/io/FileInputStream.c
r278 r373 78 78 jlong end = jlong_zero; 79 79 FD fd = GET_FD(this, fis_fd); 80 if ( fd == -1) {80 if (!VALID_FD(fd)) { 81 81 JNU_ThrowIOException (env, "Stream Closed"); 82 82 return 0; … … 94 94 jlong ret; 95 95 FD fd = GET_FD(this, fis_fd); 96 if ( fd == -1) {96 if (!VALID_FD(fd)) { 97 97 JNU_ThrowIOException (env, "Stream Closed"); 98 98 return 0; -
trunk/openjdk/jdk/src/share/native/java/io/RandomAccessFile.c
r278 r373 91 91 jlong ret; 92 92 93 fd = GET_FD(this, raf_fd);94 if ( fd == -1) {93 ASSIGN_FD(fd, this, raf_fd); 94 if (!VALID_FD(fd)) { 95 95 JNU_ThrowIOException(env, "Stream Closed"); 96 96 return -1; … … 108 108 jlong end = jlong_zero; 109 109 110 fd = GET_FD(this, raf_fd);111 if ( fd == -1) {110 ASSIGN_FD(fd, this, raf_fd); 111 if (!VALID_FD(fd)) { 112 112 JNU_ThrowIOException(env, "Stream Closed"); 113 113 return -1; … … 129 129 FD fd; 130 130 131 fd = GET_FD(this, raf_fd);132 if ( fd == -1) {131 ASSIGN_FD(fd, this, raf_fd); 132 if (!VALID_FD(fd)) { 133 133 JNU_ThrowIOException(env, "Stream Closed"); 134 134 return; … … 148 148 jlong cur; 149 149 150 fd = GET_FD(this, raf_fd);151 if ( fd == -1) {150 ASSIGN_FD(fd, this, raf_fd); 151 if (!VALID_FD(fd)) { 152 152 JNU_ThrowIOException(env, "Stream Closed"); 153 153 return; -
trunk/openjdk/jdk/src/share/native/java/io/io_util.c
r278 r373 41 41 char ret; 42 42 FD fd = GET_FD(this, fid); 43 if ( fd == -1) {43 if (!VALID_FD(fd)) { 44 44 JNU_ThrowIOException(env, "Stream Closed"); 45 45 return -1; … … 104 104 } 105 105 106 fd = GET_FD(this, fid);107 if ( fd == -1) {106 ASSIGN_FD(fd, this, fid); 107 if (!VALID_FD(fd)) { 108 108 JNU_ThrowIOException(env, "Stream Closed"); 109 109 nread = -1; … … 133 133 jint n; 134 134 FD fd = GET_FD(this, fid); 135 if ( fd == -1) {135 if (!VALID_FD(fd)) { 136 136 JNU_ThrowIOException(env, "Stream Closed"); 137 137 return; … … 181 181 off = 0; 182 182 while (len > 0) { 183 fd = GET_FD(this, fid);184 if ( fd == -1) {183 ASSIGN_FD(fd, this, fid); 184 if (!VALID_FD(fd)) { 185 185 JNU_ThrowIOException(env, "Stream Closed"); 186 186 break; -
trunk/openjdk/jdk/src/solaris/native/java/io/io_util_md.h
r278 r373 48 48 -1 : (*env)->GetIntField(env, (*env)->GetObjectField(env, (this), (fid)), IO_fd_fdID) 49 49 50 #define ASSIGN_FD(fd, this, fid) \ 51 do { \ 52 fd = (*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 53 -1 : (*env)->GetIntField(env, (*env)->GetObjectField(env, (this), (fid)), IO_fd_fdID); \ 54 } while(0) 55 56 #define VALID_FD(fd) (fd != -1) 57 50 58 /* 51 59 * Macros to set/get fd when inside java.io.FileDescriptor … … 66 74 * On Solaris, the handle field is unused 67 75 */ 68 #define SET_HANDLE(fd) return (jlong)-176 #define RETURN_HANDLE(fd) return (jlong)-1 69 77 70 78 /* -
trunk/openjdk/jdk/src/windows/native/java/io/FileDescriptor_md.c
r278 r373 55 55 JNIEXPORT jlong JNICALL 56 56 Java_java_io_FileDescriptor_set(JNIEnv *env, jclass fdClass, jint fd) { 57 SET_HANDLE(fd);57 RETURN_HANDLE(fd); 58 58 } 59 59 -
trunk/openjdk/jdk/src/windows/native/java/io/FileOutputStream_md.c
r278 r373 71 71 jboolean append = (*env)->GetBooleanField(env, this, fos_append); 72 72 FD fd = GET_FD(this, fos_fd); 73 if ( fd == -1) {73 if (!VALID_FD(fd)) { 74 74 JNU_ThrowIOException(env, "Stream Closed"); 75 75 return; … … 88 88 jboolean append = (*env)->GetBooleanField(env, this, fos_append); 89 89 FD fd = GET_FD(this, fos_fd); 90 if ( fd == -1) {90 if (!VALID_FD(fd)) { 91 91 JNU_ThrowIOException(env, "Stream Closed"); 92 92 return; -
trunk/openjdk/jdk/src/windows/native/java/io/io_util_md.c
r330 r373 533 533 { 534 534 FD fd = GET_FD(this, fid); 535 HANDLE h = (HANDLE)fd ;535 HANDLE h = (HANDLE)fd.handle; 536 536 537 537 if (h == INVALID_HANDLE_VALUE) { … … 548 548 549 549 if (CloseHandle(h) == 0) { /* Returns zero on failure */ 550 SET_FD(this, fd , fid); // restore fd550 SET_FD(this, fd.handle, fid); // restore fd 551 551 JNU_ThrowIOExceptionWithLastError(env, "close failed"); 552 552 } -
trunk/openjdk/jdk/src/windows/native/java/io/io_util_md.h
r278 r373 54 54 * Macros to use the right data type for file descriptors 55 55 */ 56 #define FD jlong 56 typedef struct __FD 57 { 58 jint fd; 59 jlong handle; 60 } _FD; 61 62 #define FD _FD 57 63 58 64 /* … … 61 67 * will simply return -1 to avoid crashing VM. 62 68 */ 69 63 70 #define SET_FD(this, fd, fid) \ 64 71 if ((*env)->GetObjectField(env, (this), (fid)) != NULL) \ … … 66 73 67 74 #define GET_FD(this, fid) \ 68 ((*env)->GetObjectField(env, (this), (fid)) == NULL) ? \ 69 -1 : (*env)->GetLongField(env, (*env)->GetObjectField(env, (this), (fid)), IO_handle_fdID) 75 { ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 76 -1 : (*env)->GetIntField(env, (*env)->GetObjectField(env, (this), (fid)), IO_fd_fdID)), \ 77 ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 78 -1 : (*env)->GetLongField(env, (*env)->GetObjectField(env, (this), (fid)), IO_handle_fdID)) } 79 80 #define ASSIGN_FD(fd, this, fid) \ 81 do { \ 82 fd.fd = ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 83 -1 : (*env)->GetIntField(env, (*env)->GetObjectField(env, (this), (fid)), IO_fd_fdID)); \ 84 fd.handle = ((*env)->GetObjectField(env, (this), (fid)) == NULL ? \ 85 -1 : (*env)->GetLongField(env, (*env)->GetObjectField(env, (this), (fid)), IO_handle_fdID)); \ 86 } while(0) 87 88 #define VALID_FD(fd) (fd.handle != -1 || fd.fd != -1) 70 89 71 90 /* 72 91 * Macros to set/get fd when inside java.io.FileDescriptor 73 92 */ 74 #define THIS_FD(obj) (*env)->GetLongField(env, obj, IO_handle_fdID)93 #define THIS_FD(obj) { (*env)->GetLongField(env, obj, IO_fd_fdID), (*env)->GetLongField(env, obj, IO_handle_fdID) } 75 94 76 95 /* 77 96 * Route the routines away from HPI layer 78 97 */ 79 #define IO_Write handleWrite80 #define IO_Sync handleSync81 #define IO_Read handleRead82 #define IO_Lseek handleLseek83 #define IO_Available handleAvailable84 #define IO_SetLength handleSetLength98 #define IO_Write(fd,buf,len) (fd.handle != -1 ? handleWrite(fd.handle, buf, len) : JVM_Write(fd.fd, buf, len)) 99 #define IO_Sync(fd) (fd.handle != -1 ? handleSync(fd.handle) : JVM_Sync(fd.fd)) 100 #define IO_Read(fd,buf,len) (fd.handle != -1 ? handleRead(fd.handle, buf, len) : JVM_Read(fd.fd, buf, len)) 101 #define IO_Lseek(fd,offset,whence) (fd.handle != -1 ? handleLseek(fd.handle, offset, whence) : JVM_Lseek(fd.fd, offset, whence)) 102 #define IO_Available(fd,pbytes) (fd.handle != -1 ? handleAvailable(fd.handle, pbytes) : JVM_Available(fd.fd, pbytes)) 103 #define IO_SetLength(fd, length) (fd.handle != -1 ? handleSetLength(fd.handle, length) : JVM_SetLength(fd.fd, length)) 85 104 86 105 /* … … 88 107 * standard handles stdIn, stdOut, stdErr 89 108 */ 90 #define SET_HANDLE(fd) \109 #define RETURN_HANDLE(fd) \ 91 110 if (fd == 0) { \ 92 111 return (jlong)GetStdHandle(STD_INPUT_HANDLE); \
Note:
See TracChangeset
for help on using the changeset viewer.