< prev index next >

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

Print this page
rev 52921 : 8211752: JNU_ThrowIOExceptionWithLastErrorAndPath - enhance some IOExceptions with path causing the issue

@@ -173,10 +173,29 @@
     if (!(*env)->ExceptionOccurred(env)) {
         JNU_ThrowByName(env, name, defaultDetail);
     }
 }
 
+
+JNIEXPORT void JNICALL
+JNU_ThrowByNameWithTwoMessagesAndLastError
+  (JNIEnv *env, const char *name, const char *message1, const char *message2)
+{
+    /* maybe we need to cache errno ? */
+    size_t messagelen1 = message1 == NULL ? 0 : strlen(message1);
+    size_t messagelen2 = message2 == NULL ? 0 : strlen(message2);
+    size_t messageconclen = messagelen1 + messagelen2 + 3;
+    char *strl = (char *)malloc(messageconclen * sizeof(char));
+    if (strl == 0) {
+        JNU_ThrowOutOfMemoryError(env, 0);
+        return;
+    }
+    jio_snprintf(strl, messageconclen, "%s:%s", message1, message2);
+    JNU_ThrowByNameWithMessageAndLastError(env, name, strl);
+    free(strl);
+}
+
 /*
  * Throw an exception by name, using a given message and the string
  * returned by getLastErrorString to construct the detail string.
  */
 JNIEXPORT void JNICALL
< prev index next >