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

Print this page

        

*** 64,73 **** --- 64,74 ---- #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,337 **** } JNIEXPORT jbyteArray Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint error) { ! char* msg; 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); bytes = (*env)->NewByteArray(env, len); if (bytes != NULL) { ! (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)msg); } return bytes; } JNIEXPORT jint --- 314,332 ---- } JNIEXPORT jbyteArray Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint error) { ! char buf[1024]; jsize len; jbyteArray bytes; ! 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*)buf); } return bytes; } JNIEXPORT jint