src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c

Print this page

        

@@ -64,10 +64,11 @@
 #define lstat64 lstat
 #define dirent64 dirent
 #define readdir64_r readdir_r
 #endif
 
+#include "jdk_strerror.h"
 #include "jni.h"
 #include "jni_util.h"
 #include "jlong.h"
 
 #include "sun_nio_fs_UnixNativeDispatcher.h"

@@ -313,25 +314,19 @@
 }
 
 JNIEXPORT jbyteArray
 Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint error)
 {
-    char* msg;
+    char buf[1024];
     jsize len;
     jbyteArray bytes;
 
-#ifdef _AIX
-    /* strerror() is not thread-safe on AIX so we have to use strerror_r() */
-    char buffer[256];
-    msg = (strerror_r((int)error, buffer, 256) == 0) ? buffer : "Error while calling strerror_r";
-#else
-    msg = strerror((int)error);
-#endif
-    len = strlen(msg);
+    jdk_strerror((int)error, buf, (size_t) 1024);
+    len = strlen(buf);
     bytes = (*env)->NewByteArray(env, len);
     if (bytes != NULL) {
-        (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)msg);
+        (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)buf);
     }
     return bytes;
 }
 
 JNIEXPORT jint