summaryrefslogtreecommitdiff
path: root/native/jni/java-lang/java_lang_VMSystem.c
diff options
context:
space:
mode:
authorBrian Jones <cbj@gnu.org>2003-05-02 03:23:31 +0000
committerBrian Jones <cbj@gnu.org>2003-05-02 03:23:31 +0000
commit4fe67ed9952d6f56851237094c8081e90077d869 (patch)
tree7170937d0da9ba6ca075e4057efb7e3b981c0078 /native/jni/java-lang/java_lang_VMSystem.c
parent013212d3460b16ca31c7203c1b9df38f7180af52 (diff)
downloadclasspath-4fe67ed9952d6f56851237094c8081e90077d869.tar.gz
Fixes [ Bug #3415 ] System.setIn/setOut/setErr do not work
* native/jni/java-lang/java_lang_VMSystem.c (Java_java_lang_VMSystem_setIn): set static field in java/lang/System and perform appropriate JNI exception checks (Java_java_lang_VMSystem_setOut): ditto (Java_java_lang_VMSystem_setErr): ditto
Diffstat (limited to 'native/jni/java-lang/java_lang_VMSystem.c')
-rw-r--r--native/jni/java-lang/java_lang_VMSystem.c51
1 files changed, 39 insertions, 12 deletions
diff --git a/native/jni/java-lang/java_lang_VMSystem.c b/native/jni/java-lang/java_lang_VMSystem.c
index 6fa1e03f9..7259f67b9 100644
--- a/native/jni/java-lang/java_lang_VMSystem.c
+++ b/native/jni/java-lang/java_lang_VMSystem.c
@@ -45,11 +45,20 @@ exception statement from your version. */
* Signature: (Ljava/io/InputStream;)V
*/
JNIEXPORT void JNICALL
-Java_java_lang_VMSystem_setIn (JNIEnv * env, jclass thisClass, jobject in)
+Java_java_lang_VMSystem_setIn (JNIEnv * env, jclass thisClass, jobject obj)
{
- jfieldID inField = (*env)->GetStaticFieldID(env, thisClass, "in",
- "Ljava/io/InputStream;");
- (*env)->SetStaticObjectField(env, thisClass, inField, in);
+ jclass cls;
+ jfieldID field;
+
+ cls = JCL_FindClass(env, "java/lang/System");
+ if (!cls)
+ return;
+
+ field = (*env)->GetStaticFieldID(env, cls, "in",
+ "Ljava/io/InputStream;");
+ if (!field)
+ return;
+ (*env)->SetStaticObjectField(env, cls, field, obj);
}
/*
@@ -58,11 +67,20 @@ Java_java_lang_VMSystem_setIn (JNIEnv * env, jclass thisClass, jobject in)
* Signature: (Ljava/io/PrintStream;)V
*/
JNIEXPORT void JNICALL
-Java_java_lang_VMSystem_setOut (JNIEnv * env, jclass thisClass, jobject out)
+Java_java_lang_VMSystem_setOut (JNIEnv * env, jclass thisClass, jobject obj)
{
- jfieldID outField = (*env)->GetStaticFieldID(env, thisClass, "out",
- "Ljava/io/PrintStream;");
- (*env)->SetStaticObjectField(env, thisClass, outField, out);
+ jclass cls;
+ jfieldID field;
+
+ cls = JCL_FindClass(env, "java/lang/System");
+ if (!cls)
+ return;
+
+ field = (*env)->GetStaticFieldID(env, cls, "out",
+ "Ljava/io/PrintStream;");
+ if (!field)
+ return;
+ (*env)->SetStaticObjectField(env, cls, field, obj);
}
/*
@@ -71,11 +89,20 @@ Java_java_lang_VMSystem_setOut (JNIEnv * env, jclass thisClass, jobject out)
* Signature: (Ljava/io/PrintStream;)V
*/
JNIEXPORT void JNICALL
-Java_java_lang_VMSystem_setErr (JNIEnv * env, jclass thisClass, jobject err)
+Java_java_lang_VMSystem_setErr (JNIEnv * env, jclass thisClass, jobject obj)
{
- jfieldID errField = (*env)->GetStaticFieldID(env, thisClass, "err",
- "Ljava/io/PrintStream;");
- (*env)->SetStaticObjectField(env, thisClass, errField, err);
+ jclass cls;
+ jfieldID field;
+
+ cls = JCL_FindClass(env, "java/lang/System");
+ if (!cls)
+ return;
+
+ field = (*env)->GetStaticFieldID(env, cls, "err",
+ "Ljava/io/PrintStream;");
+ if (!field)
+ return;
+ (*env)->SetStaticObjectField(env, cls, field, obj);
}
/*