diff options
| author | Brian Jones <cbj@gnu.org> | 2003-05-02 03:23:31 +0000 |
|---|---|---|
| committer | Brian Jones <cbj@gnu.org> | 2003-05-02 03:23:31 +0000 |
| commit | 4fe67ed9952d6f56851237094c8081e90077d869 (patch) | |
| tree | 7170937d0da9ba6ca075e4057efb7e3b981c0078 /native/jni/java-lang/java_lang_VMSystem.c | |
| parent | 013212d3460b16ca31c7203c1b9df38f7180af52 (diff) | |
| download | classpath-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.c | 51 |
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); } /* |
