< prev index next >

src/java.base/share/native/libjava/jni_util.c

Print this page
rev 16200 : 8170465: JNI exception pending in jni_util.c:190
8170466: JNI exception pending in jni_util.c:190
Reviewed-by:


 184 {
 185     char buf[256];
 186     size_t n = getLastErrorString(buf, sizeof(buf));
 187     size_t messagelen = message == NULL ? 0 : strlen(message);
 188 
 189     if (n > 0) {
 190         jstring s = JNU_NewStringPlatform(env, buf);
 191         if (s != NULL) {
 192             jobject x = NULL;
 193             if (messagelen) {
 194                 jstring s2 = NULL;
 195                 size_t messageextlen = messagelen + 4;
 196                 char *str1 = (char *)malloc((messageextlen) * sizeof(char));
 197                 if (str1 == 0) {
 198                     JNU_ThrowOutOfMemoryError(env, 0);
 199                     return;
 200                 }
 201                 jio_snprintf(str1, messageextlen, " (%s)", message);
 202                 s2 = (*env)->NewStringUTF(env, str1);
 203                 free(str1);

 204                 if (s2 != NULL) {
 205                     jstring s3 = JNU_CallMethodByName(
 206                                      env, NULL, s, "concat",
 207                                      "(Ljava/lang/String;)Ljava/lang/String;",
 208                                      s2).l;
 209                     (*env)->DeleteLocalRef(env, s2);

 210                     if (s3 != NULL) {
 211                         (*env)->DeleteLocalRef(env, s);
 212                         s = s3;
 213                     }
 214                 }
 215             }
 216             x = JNU_NewObjectByName(env, name, "(Ljava/lang/String;)V", s);
 217             if (x != NULL) {
 218                 (*env)->Throw(env, x);
 219             }
 220         }
 221     }
 222 
 223     if (!(*env)->ExceptionOccurred(env)) {
 224         if (messagelen) {
 225             JNU_ThrowByName(env, name, message);
 226         } else {
 227             JNU_ThrowByName(env, name, "no further information");
 228         }
 229     }




 184 {
 185     char buf[256];
 186     size_t n = getLastErrorString(buf, sizeof(buf));
 187     size_t messagelen = message == NULL ? 0 : strlen(message);
 188 
 189     if (n > 0) {
 190         jstring s = JNU_NewStringPlatform(env, buf);
 191         if (s != NULL) {
 192             jobject x = NULL;
 193             if (messagelen) {
 194                 jstring s2 = NULL;
 195                 size_t messageextlen = messagelen + 4;
 196                 char *str1 = (char *)malloc((messageextlen) * sizeof(char));
 197                 if (str1 == 0) {
 198                     JNU_ThrowOutOfMemoryError(env, 0);
 199                     return;
 200                 }
 201                 jio_snprintf(str1, messageextlen, " (%s)", message);
 202                 s2 = (*env)->NewStringUTF(env, str1);
 203                 free(str1);
 204                 JNU_CHECK_EXCEPTION(env);
 205                 if (s2 != NULL) {
 206                     jstring s3 = JNU_CallMethodByName(
 207                                      env, NULL, s, "concat",
 208                                      "(Ljava/lang/String;)Ljava/lang/String;",
 209                                      s2).l;
 210                     (*env)->DeleteLocalRef(env, s2);
 211                     JNU_CHECK_EXCEPTION(env);
 212                     if (s3 != NULL) {
 213                         (*env)->DeleteLocalRef(env, s);
 214                         s = s3;
 215                     }
 216                 }
 217             }
 218             x = JNU_NewObjectByName(env, name, "(Ljava/lang/String;)V", s);
 219             if (x != NULL) {
 220                 (*env)->Throw(env, x);
 221             }
 222         }
 223     }
 224 
 225     if (!(*env)->ExceptionOccurred(env)) {
 226         if (messagelen) {
 227             JNU_ThrowByName(env, name, message);
 228         } else {
 229             JNU_ThrowByName(env, name, "no further information");
 230         }
 231     }


< prev index next >