Merge
This commit is contained in:
commit
9298831bab
@ -64,7 +64,7 @@ CORE_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
|
|||||||
-bottom $(JAVADOCBOTTOM_SWITCH) \
|
-bottom $(JAVADOCBOTTOM_SWITCH) \
|
||||||
$(OVERVIEW_OPTION)
|
$(OVERVIEW_OPTION)
|
||||||
|
|
||||||
DRAFT = '<br><b>DRAFT '$(MILESTONE)-$(BUILD_NUMBER)'</b>'
|
DRAFT = '<br><strong>DRAFT '$(MILESTONE)-$(BUILD_NUMBER)'</strong>'
|
||||||
THIS_YEAR := $(shell $(DATE) | $(SED) -e 's/ / /g' | $(CUT) -d' ' -f6)
|
THIS_YEAR := $(shell $(DATE) | $(SED) -e 's/ / /g' | $(CUT) -d' ' -f6)
|
||||||
TRADEMARK = &\#x2122;
|
TRADEMARK = &\#x2122;
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ endif
|
|||||||
|
|
||||||
JAVADOCTITLE = 'Java$(TRADEMARK) Platform, Standard Edition $(JDK_MINOR_VERSION)<br>API Specification'
|
JAVADOCTITLE = 'Java$(TRADEMARK) Platform, Standard Edition $(JDK_MINOR_VERSION)<br>API Specification'
|
||||||
JAVADOCWINDOWTITLE = 'Java Platform SE $(JDK_MINOR_VERSION)'
|
JAVADOCWINDOWTITLE = 'Java Platform SE $(JDK_MINOR_VERSION)'
|
||||||
JAVADOCHEADER = '<b>Java$(TRADEMARK) Platform<br>Standard Ed. $(JDK_MINOR_VERSION)</b>'
|
JAVADOCHEADER = '<strong>Java$(TRADEMARK) Platform<br>Standard Ed. $(JDK_MINOR_VERSION)</strong>'
|
||||||
JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="{@docroot}/../../webnotes/devdocs-vs-specs.html">Java SE Developer Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. <p>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to <a href="{@docroot}/../legal/license.html">license terms</a>. Also see the <a href="http://java.sun.com/docs/redist.html">documentation redistribution policy</a>.</font>'
|
JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>For further API reference and developer documentation, see <a href="{@docroot}/../../webnotes/devdocs-vs-specs.html">Java SE Developer Documentation</a>. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. <p>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to <a href="{@docroot}/../legal/license.html">license terms</a>. Also see the <a href="http://java.sun.com/docs/redist.html">documentation redistribution policy</a>.</font>'
|
||||||
JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html
|
JAVADOCOVERVIEW = $(SHARE_SRC)/classes/overview-core.html
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ DOMAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
|
|||||||
-group $(DOMAPI_GROUPNAME) $(DOMAPI_REGEXP)
|
-group $(DOMAPI_GROUPNAME) $(DOMAPI_REGEXP)
|
||||||
DOMAPI_JAVADOCTITLE = 'Common DOM API'
|
DOMAPI_JAVADOCTITLE = 'Common DOM API'
|
||||||
DOMAPI_JAVADOCWINDOWTITLE = 'Common DOM API'
|
DOMAPI_JAVADOCWINDOWTITLE = 'Common DOM API'
|
||||||
DOMAPI_JAVADOCHEADER = '<b>Common DOM API</b>'
|
DOMAPI_JAVADOCHEADER = '<strong>Common DOM API</strong>'
|
||||||
DOMAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
|
DOMAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
|
||||||
DOMAPI_GROUPNAME = "Packages"
|
DOMAPI_GROUPNAME = "Packages"
|
||||||
DOMAPI_REGEXP = "com.sun.java.browser.dom:org.w3c.dom*"
|
DOMAPI_REGEXP = "com.sun.java.browser.dom:org.w3c.dom*"
|
||||||
@ -140,7 +140,7 @@ MIRROR_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
|
|||||||
-overview $(MIRROR_OVERVIEW)
|
-overview $(MIRROR_OVERVIEW)
|
||||||
MIRROR_JAVADOCTITLE = 'Mirror API'
|
MIRROR_JAVADOCTITLE = 'Mirror API'
|
||||||
MIRROR_JAVADOCWINDOWTITLE = 'Mirror API'
|
MIRROR_JAVADOCWINDOWTITLE = 'Mirror API'
|
||||||
MIRROR_JAVADOCHEADER = '<b>Mirror API</b>'
|
MIRROR_JAVADOCHEADER = '<strong>Mirror API</strong>'
|
||||||
MIRROR_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
|
MIRROR_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
|
||||||
MIRROR_GROUPNAME = "Packages"
|
MIRROR_GROUPNAME = "Packages"
|
||||||
MIRROR_OVERVIEW = $(IMPORTSRCDIR)/com/sun/mirror/overview.html
|
MIRROR_OVERVIEW = $(IMPORTSRCDIR)/com/sun/mirror/overview.html
|
||||||
@ -163,7 +163,7 @@ DOCLETAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
|
|||||||
-group $(DOCLETAPI_GROUPNAME) $(DOCLETAPI_REGEXP)
|
-group $(DOCLETAPI_GROUPNAME) $(DOCLETAPI_REGEXP)
|
||||||
DOCLETAPI_JAVADOCTITLE = 'Doclet API'
|
DOCLETAPI_JAVADOCTITLE = 'Doclet API'
|
||||||
DOCLETAPI_JAVADOCWINDOWTITLE = 'Doclet API'
|
DOCLETAPI_JAVADOCWINDOWTITLE = 'Doclet API'
|
||||||
DOCLETAPI_JAVADOCHEADER = '<b>Doclet API</b>'
|
DOCLETAPI_JAVADOCHEADER = '<strong>Doclet API</strong>'
|
||||||
DOCLETAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
|
DOCLETAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Submit a bug or feature</a><br>Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.<br>Copyright 1993-$(THIS_YEAR) Sun Microsystems, Inc. 4150 Network Circle<br>Santa Clara, California, 95054, U.S.A. All Rights Reserved.</font>'
|
||||||
DOCLETAPI_GROUPNAME = "Packages"
|
DOCLETAPI_GROUPNAME = "Packages"
|
||||||
DOCLETAPI_REGEXP = "com.sun.javadoc"
|
DOCLETAPI_REGEXP = "com.sun.javadoc"
|
||||||
@ -407,7 +407,7 @@ TREEAPI_JAVADOCFLAGS = $(COMMON_JAVADOCFLAGS) \
|
|||||||
#
|
#
|
||||||
TREEAPI_JAVADOCTITLE = 'Compiler Tree API'
|
TREEAPI_JAVADOCTITLE = 'Compiler Tree API'
|
||||||
TREEAPI_JAVADOCWINDOWTITLE = 'Compiler Tree API'
|
TREEAPI_JAVADOCWINDOWTITLE = 'Compiler Tree API'
|
||||||
TREEAPI_JAVADOCHEADER = '<b>Compiler Tree API</b>'
|
TREEAPI_JAVADOCHEADER = '<strong>Compiler Tree API</strong>'
|
||||||
TREEAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
|
TREEAPI_JAVADOCBOTTOM = '<font size="-1"><a href="http://bugs.sun.com/services/bugreport/index.jsp">Report a bug or request a feature.</a><br>Copyright $(THIS_YEAR) Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.</font>'
|
||||||
TREEAPI_GROUPNAME = "Packages"
|
TREEAPI_GROUPNAME = "Packages"
|
||||||
TREEAPI_OVERVIEW = $(SHARE_SRC)/classes/com/sun/source/overview.html
|
TREEAPI_OVERVIEW = $(SHARE_SRC)/classes/com/sun/source/overview.html
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "jni.h"
|
#include "jni.h"
|
||||||
#include "jni_util.h"
|
#include "jni_util.h"
|
||||||
@ -34,9 +35,9 @@
|
|||||||
|
|
||||||
/* IO helper functions */
|
/* IO helper functions */
|
||||||
|
|
||||||
int
|
jint
|
||||||
readSingle(JNIEnv *env, jobject this, jfieldID fid) {
|
readSingle(JNIEnv *env, jobject this, jfieldID fid) {
|
||||||
int nread;
|
jint nread;
|
||||||
char ret;
|
char ret;
|
||||||
FD fd = GET_FD(this, fid);
|
FD fd = GET_FD(this, fid);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
@ -49,7 +50,7 @@ readSingle(JNIEnv *env, jobject this, jfieldID fid) {
|
|||||||
} else if (nread == JVM_IO_ERR) { /* error */
|
} else if (nread == JVM_IO_ERR) { /* error */
|
||||||
JNU_ThrowIOExceptionWithLastError(env, "Read error");
|
JNU_ThrowIOExceptionWithLastError(env, "Read error");
|
||||||
} else if (nread == JVM_IO_INTR) {
|
} else if (nread == JVM_IO_INTR) {
|
||||||
JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
|
JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
|
||||||
}
|
}
|
||||||
return ret & 0xFF;
|
return ret & 0xFF;
|
||||||
}
|
}
|
||||||
@ -58,25 +59,35 @@ readSingle(JNIEnv *env, jobject this, jfieldID fid) {
|
|||||||
*/
|
*/
|
||||||
#define BUF_SIZE 8192
|
#define BUF_SIZE 8192
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns true if the array slice defined by the given offset and length
|
||||||
|
* is out of bounds.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
outOfBounds(JNIEnv *env, jint off, jint len, jbyteArray array) {
|
||||||
|
return ((off < 0) ||
|
||||||
|
(len < 0) ||
|
||||||
|
// We are very careful to avoid signed integer overflow,
|
||||||
|
// the result of which is undefined in C.
|
||||||
|
((*env)->GetArrayLength(env, array) - off < len));
|
||||||
|
}
|
||||||
|
|
||||||
int
|
jint
|
||||||
readBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
readBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
||||||
jint off, jint len, jfieldID fid)
|
jint off, jint len, jfieldID fid)
|
||||||
{
|
{
|
||||||
int nread, datalen;
|
jint nread;
|
||||||
char stackBuf[BUF_SIZE];
|
char stackBuf[BUF_SIZE];
|
||||||
char *buf = 0;
|
char *buf = NULL;
|
||||||
FD fd;
|
FD fd;
|
||||||
|
|
||||||
if (IS_NULL(bytes)) {
|
if (IS_NULL(bytes)) {
|
||||||
JNU_ThrowNullPointerException(env, 0);
|
JNU_ThrowNullPointerException(env, NULL);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
datalen = (*env)->GetArrayLength(env, bytes);
|
|
||||||
|
|
||||||
if ((off < 0) || (off > datalen) ||
|
if (outOfBounds(env, off, len, bytes)) {
|
||||||
(len < 0) || ((off + len) > datalen) || ((off + len) < 0)) {
|
JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", NULL);
|
||||||
JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,8 +95,8 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
|||||||
return 0;
|
return 0;
|
||||||
} else if (len > BUF_SIZE) {
|
} else if (len > BUF_SIZE) {
|
||||||
buf = malloc(len);
|
buf = malloc(len);
|
||||||
if (buf == 0) {
|
if (buf == NULL) {
|
||||||
JNU_ThrowOutOfMemoryError(env, 0);
|
JNU_ThrowOutOfMemoryError(env, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -95,18 +106,18 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
|||||||
fd = GET_FD(this, fid);
|
fd = GET_FD(this, fid);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
JNU_ThrowIOException(env, "Stream Closed");
|
JNU_ThrowIOException(env, "Stream Closed");
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
nread = IO_Read(fd, buf, len);
|
|
||||||
if (nread > 0) {
|
|
||||||
(*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf);
|
|
||||||
} else if (nread == JVM_IO_ERR) {
|
|
||||||
JNU_ThrowIOExceptionWithLastError(env, "Read error");
|
|
||||||
} else if (nread == JVM_IO_INTR) { /* EOF */
|
|
||||||
JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
|
|
||||||
} else { /* EOF */
|
|
||||||
nread = -1;
|
nread = -1;
|
||||||
|
} else {
|
||||||
|
nread = IO_Read(fd, buf, len);
|
||||||
|
if (nread > 0) {
|
||||||
|
(*env)->SetByteArrayRegion(env, bytes, off, nread, (jbyte *)buf);
|
||||||
|
} else if (nread == JVM_IO_ERR) {
|
||||||
|
JNU_ThrowIOExceptionWithLastError(env, "Read error");
|
||||||
|
} else if (nread == JVM_IO_INTR) {
|
||||||
|
JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
|
||||||
|
} else { /* EOF */
|
||||||
|
nread = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf != stackBuf) {
|
if (buf != stackBuf) {
|
||||||
@ -117,8 +128,9 @@ readBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
|||||||
|
|
||||||
void
|
void
|
||||||
writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid) {
|
writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid) {
|
||||||
char c = byte;
|
// Discard the 24 high-order bits of byte. See OutputStream#write(int)
|
||||||
int n;
|
char c = (char) byte;
|
||||||
|
jint n;
|
||||||
FD fd = GET_FD(this, fid);
|
FD fd = GET_FD(this, fid);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
JNU_ThrowIOException(env, "Stream Closed");
|
JNU_ThrowIOException(env, "Stream Closed");
|
||||||
@ -128,28 +140,26 @@ writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid) {
|
|||||||
if (n == JVM_IO_ERR) {
|
if (n == JVM_IO_ERR) {
|
||||||
JNU_ThrowIOExceptionWithLastError(env, "Write error");
|
JNU_ThrowIOExceptionWithLastError(env, "Write error");
|
||||||
} else if (n == JVM_IO_INTR) {
|
} else if (n == JVM_IO_INTR) {
|
||||||
JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
|
JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
writeBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
writeBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
||||||
jint off, jint len, jfieldID fid)
|
jint off, jint len, jfieldID fid)
|
||||||
{
|
{
|
||||||
int n, datalen;
|
jint n;
|
||||||
char stackBuf[BUF_SIZE];
|
char stackBuf[BUF_SIZE];
|
||||||
char *buf = 0;
|
char *buf = NULL;
|
||||||
FD fd;
|
FD fd;
|
||||||
|
|
||||||
if (IS_NULL(bytes)) {
|
if (IS_NULL(bytes)) {
|
||||||
JNU_ThrowNullPointerException(env, 0);
|
JNU_ThrowNullPointerException(env, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
datalen = (*env)->GetArrayLength(env, bytes);
|
|
||||||
|
|
||||||
if ((off < 0) || (off > datalen) ||
|
if (outOfBounds(env, off, len, bytes)) {
|
||||||
(len < 0) || ((off + len) > datalen) || ((off + len) < 0)) {
|
JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", NULL);
|
||||||
JNU_ThrowByName(env, "java/lang/IndexOutOfBoundsException", 0);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,8 +167,8 @@ writeBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
|||||||
return;
|
return;
|
||||||
} else if (len > BUF_SIZE) {
|
} else if (len > BUF_SIZE) {
|
||||||
buf = malloc(len);
|
buf = malloc(len);
|
||||||
if (buf == 0) {
|
if (buf == NULL) {
|
||||||
JNU_ThrowOutOfMemoryError(env, 0);
|
JNU_ThrowOutOfMemoryError(env, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -180,7 +190,7 @@ writeBytes(JNIEnv *env, jobject this, jbyteArray bytes,
|
|||||||
JNU_ThrowIOExceptionWithLastError(env, "Write error");
|
JNU_ThrowIOExceptionWithLastError(env, "Write error");
|
||||||
break;
|
break;
|
||||||
} else if (n == JVM_IO_INTR) {
|
} else if (n == JVM_IO_INTR) {
|
||||||
JNU_ThrowByName(env, "java/io/InterruptedIOException", 0);
|
JNU_ThrowByName(env, "java/io/InterruptedIOException", NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
off += n;
|
off += n;
|
||||||
@ -196,19 +206,19 @@ void
|
|||||||
throwFileNotFoundException(JNIEnv *env, jstring path)
|
throwFileNotFoundException(JNIEnv *env, jstring path)
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
int n;
|
jint n;
|
||||||
jobject x;
|
jobject x;
|
||||||
jstring why = NULL;
|
jstring why = NULL;
|
||||||
|
|
||||||
n = JVM_GetLastErrorString(buf, sizeof(buf));
|
n = JVM_GetLastErrorString(buf, sizeof(buf));
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
why = JNU_NewStringPlatform(env, buf);
|
why = JNU_NewStringPlatform(env, buf);
|
||||||
}
|
}
|
||||||
x = JNU_NewObjectByName(env,
|
x = JNU_NewObjectByName(env,
|
||||||
"java/io/FileNotFoundException",
|
"java/io/FileNotFoundException",
|
||||||
"(Ljava/lang/String;Ljava/lang/String;)V",
|
"(Ljava/lang/String;Ljava/lang/String;)V",
|
||||||
path, why);
|
path, why);
|
||||||
if (x != NULL) {
|
if (x != NULL) {
|
||||||
(*env)->Throw(env, x);
|
(*env)->Throw(env, x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,9 +38,9 @@ extern jfieldID IO_handle_fdID;
|
|||||||
* IO helper functions
|
* IO helper functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int readSingle(JNIEnv *env, jobject this, jfieldID fid);
|
jint readSingle(JNIEnv *env, jobject this, jfieldID fid);
|
||||||
int readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
|
jint readBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
|
||||||
jint len, jfieldID fid);
|
jint len, jfieldID fid);
|
||||||
void writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid);
|
void writeSingle(JNIEnv *env, jobject this, jint byte, jfieldID fid);
|
||||||
void writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
|
void writeBytes(JNIEnv *env, jobject this, jbyteArray bytes, jint off,
|
||||||
jint len, jfieldID fid);
|
jint len, jfieldID fid);
|
||||||
|
51
jdk/test/java/io/readBytes/MemoryLeak.java
Normal file
51
jdk/test/java/io/readBytes/MemoryLeak.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @test
|
||||||
|
* @bug 6791458
|
||||||
|
* @summary Reading from closed input files leaks native memory
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
|
public class MemoryLeak {
|
||||||
|
public static void main(String[] args) throws Throwable {
|
||||||
|
byte[] bytes = new byte[1 << 20];
|
||||||
|
String dir = System.getProperty("test.src", ".");
|
||||||
|
File testFile = new File(dir, "input.txt");
|
||||||
|
FileInputStream s = new FileInputStream(testFile);
|
||||||
|
s.close();
|
||||||
|
for (int i = 0; i < 10000; i++) {
|
||||||
|
try {
|
||||||
|
s.read(bytes);
|
||||||
|
throw new Error("expected IOException");
|
||||||
|
} catch (IOException _) {
|
||||||
|
/* OK */
|
||||||
|
} catch (OutOfMemoryError oome) {
|
||||||
|
System.out.printf("Got OutOfMemoryError, i=%d%n", i);
|
||||||
|
throw oome;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -22,107 +22,76 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@test
|
* @test
|
||||||
@bug 4017728 4079849
|
* @bug 4017728 4079849 6788196
|
||||||
@summary Check for correct Array Bounds check in read of FileInputStream and
|
* @summary Check for correct Array Bounds check in read of FileInputStream and
|
||||||
RandomAccessFile
|
* RandomAccessFile
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The test calls the read(byte buf[] , int off , int len) of FileInputStream with
|
* The test calls the read(byte buf[] , int off , int len) of
|
||||||
* different values of off and len to see if the ArrayOutOfBoundsException is
|
* FileInputStream with different values of off and len to see if the
|
||||||
* thrown according to the JLS1.0 specification. The read(...) method calls
|
* IndexOutOfBoundsException is thrown. The read(...) method calls
|
||||||
* readBytes(...) in native code(io_util.c). The read(...) method in RandomAccessFile
|
* readBytes(...) in native code(io_util.c). The read(...) method in
|
||||||
* also calls the same native method. So one should see similar results.
|
* RandomAccessFile also calls the same native method. So one should
|
||||||
|
* see similar results.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
public class ReadBytesBounds {
|
public class ReadBytesBounds {
|
||||||
|
|
||||||
public static void main(String argv[]) throws Exception{
|
static final FileInputStream fis;
|
||||||
|
static final RandomAccessFile raf;
|
||||||
int num_test_cases = 12;
|
static final byte[] b = new byte[32];
|
||||||
int off[] = {-1 , -1 , 0 , 0 , 33 , 33 , 0 , 32 , 32 , 4 , 1 , 0};
|
|
||||||
int len[] = {-1 , 0 , -1 , 33 , 0 , 4 , 32 , 0 , 4 , 16 , 31 , 0};
|
|
||||||
boolean results[] = { false , false , false , false , false , false ,
|
|
||||||
true , true , false , true , true , true};
|
|
||||||
|
|
||||||
|
|
||||||
FileInputStream fis = null;
|
|
||||||
RandomAccessFile raf = null;
|
|
||||||
byte b[] = new byte[32];
|
|
||||||
|
|
||||||
int num_good = 0;
|
|
||||||
int num_bad = 0;
|
|
||||||
|
|
||||||
String dir = System.getProperty("test.src", ".");
|
|
||||||
File testFile = new File(dir, "input.txt");
|
|
||||||
fis = new FileInputStream(testFile);
|
|
||||||
for(int i = 0; i < num_test_cases; i++) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
int bytes_read = fis.read(b , off[i] , len[i]);
|
|
||||||
} catch(IndexOutOfBoundsException aiobe) {
|
|
||||||
if (results[i]) {
|
|
||||||
throw new RuntimeException("Unexpected result");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
num_good++;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (results[i]) {
|
|
||||||
num_good++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new RuntimeException("Unexpected result");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
String dir = System.getProperty("test.src", ".");
|
||||||
|
File testFile = new File(dir, "input.txt");
|
||||||
|
fis = new FileInputStream(testFile);
|
||||||
|
raf = new RandomAccessFile(testFile , "r");
|
||||||
|
} catch (Throwable t) {
|
||||||
|
throw new Error(t);
|
||||||
}
|
}
|
||||||
System.out.println("Results for FileInputStream.read");
|
|
||||||
System.out.println("\nTotal number of test cases = " + num_test_cases +
|
|
||||||
"\nNumber succeded = " + num_good +
|
|
||||||
"\nNumber failed = " + num_bad);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
num_good = 0;
|
|
||||||
num_bad = 0;
|
|
||||||
|
|
||||||
raf = new RandomAccessFile(testFile , "r");
|
|
||||||
for(int i = 0; i < num_test_cases; i++) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
int bytes_read = raf.read(b , off[i] , len[i]);
|
|
||||||
} catch(IndexOutOfBoundsException aiobe) {
|
|
||||||
if (results[i]) {
|
|
||||||
throw new RuntimeException("Unexpected result");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
num_good++;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (results[i]) {
|
|
||||||
num_good++;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw new RuntimeException("Unexpected result");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println("Results for RandomAccessFile.read");
|
|
||||||
System.out.println("\nTotal number of test cases = " + num_test_cases +
|
|
||||||
"\nNumber succeded = " + num_good +
|
|
||||||
"\nNumber failed = " + num_bad);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String argv[]) throws Throwable {
|
||||||
|
byte b[] = new byte[32];
|
||||||
|
testRead(-1, -1, false);
|
||||||
|
testRead(-1, 0, false);
|
||||||
|
testRead( 0, -1, false);
|
||||||
|
testRead( 0, 33, false);
|
||||||
|
testRead(33, 0, false);
|
||||||
|
testRead(33, 4, false);
|
||||||
|
testRead( 0, 32, true);
|
||||||
|
testRead(32, 0, true);
|
||||||
|
testRead(32, 4, false);
|
||||||
|
testRead( 4, 16, true);
|
||||||
|
testRead( 1, 31, true);
|
||||||
|
testRead( 0, 0, true);
|
||||||
|
testRead(31, Integer.MAX_VALUE, false);
|
||||||
|
testRead( 0, Integer.MAX_VALUE, false);
|
||||||
|
testRead(-1, Integer.MAX_VALUE, false);
|
||||||
|
testRead(-4, Integer.MIN_VALUE, false);
|
||||||
|
testRead( 0, Integer.MIN_VALUE, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void testRead(int off, int len, boolean expected) throws Throwable {
|
||||||
|
System.err.printf("off=%d len=%d expected=%b%n", off, len, expected);
|
||||||
|
boolean result;
|
||||||
|
try {
|
||||||
|
fis.read(b, off, len);
|
||||||
|
raf.read(b, off, len);
|
||||||
|
result = true;
|
||||||
|
} catch (IndexOutOfBoundsException e) {
|
||||||
|
result = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result != expected) {
|
||||||
|
throw new RuntimeException
|
||||||
|
(String.format("Unexpected result off=%d len=%d expected=%b",
|
||||||
|
off, len, expected));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
71
jdk/test/sun/jvmstat/monitor/MonitoredVm/CR6672135.java
Normal file
71
jdk/test/sun/jvmstat/monitor/MonitoredVm/CR6672135.java
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
|
||||||
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
|
*
|
||||||
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
* version 2 for more details (a copy is included in the LICENSE file that
|
||||||
|
* accompanied this code).
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License version
|
||||||
|
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||||
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*
|
||||||
|
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||||
|
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||||
|
* have any questions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.Set;
|
||||||
|
import sun.jvmstat.monitor.MonitorException;
|
||||||
|
import sun.jvmstat.monitor.MonitoredHost;
|
||||||
|
import sun.jvmstat.monitor.MonitoredVm;
|
||||||
|
import sun.jvmstat.monitor.VmIdentifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @test
|
||||||
|
* @bug 6672135
|
||||||
|
* @summary setInterval() for local MonitoredHost and local MonitoredVm
|
||||||
|
* @author Tomas Hurka
|
||||||
|
*/
|
||||||
|
public class CR6672135 {
|
||||||
|
|
||||||
|
private static final int INTERVAL = 2000;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
int vmInterval;
|
||||||
|
int hostInterval;
|
||||||
|
|
||||||
|
try {
|
||||||
|
MonitoredHost localHost = MonitoredHost.getMonitoredHost("localhost");
|
||||||
|
Set vms = localHost.activeVms();
|
||||||
|
Integer vmInt = (Integer) vms.iterator().next();
|
||||||
|
String uriString = "//" + vmInt + "?mode=r"; // NOI18N
|
||||||
|
VmIdentifier vmId = new VmIdentifier(uriString);
|
||||||
|
MonitoredVm vm = localHost.getMonitoredVm(vmId);
|
||||||
|
|
||||||
|
vm.setInterval(INTERVAL);
|
||||||
|
localHost.setInterval(INTERVAL);
|
||||||
|
vmInterval = vm.getInterval();
|
||||||
|
hostInterval = localHost.getInterval();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
throw new Error ("Test failed",ex);
|
||||||
|
}
|
||||||
|
System.out.println("VM "+vmInterval);
|
||||||
|
if (vmInterval != INTERVAL) {
|
||||||
|
throw new Error("Test failed");
|
||||||
|
}
|
||||||
|
System.out.println("Host "+hostInterval);
|
||||||
|
if (hostInterval != INTERVAL) {
|
||||||
|
throw new Error("Test failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user