src/java.base/unix/native/libjava/jni_util_md.c
Print this page
@@ -28,10 +28,16 @@
#include "jni.h"
#include "jni_util.h"
#include "dlfcn.h"
+#if defined(LINUX) && (defined(_GNU_SOURCE) || \
+ (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE < 200112L \
+ && defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 600))
+#define strerror_r(a, b, c) __xpg_strerror_r((a), (b), (c))
+#endif
+
void* getProcessHandle() {
static void *procHandle = NULL;
if (procHandle != NULL) {
return procHandle;
}
@@ -53,18 +59,16 @@
}
size_t
getLastErrorString(char *buf, size_t len)
{
- char *err;
- size_t n;
if (errno == 0 || len < 1) return 0;
+ getErrorString(errno, buf, len);
+ return strlen(buf);
+}
- err = strerror(errno);
- n = strlen(err);
- if (n >= len)
- n = len - 1;
-
- strncpy(buf, err, n);
- buf[n] = '\0';
- return n;
+int
+getErrorString(int err, char *buf, size_t len)
+{
+ if (err == 0 || len < 1) return 0;
+ return strerror_r(err, buf, len);
}