src/java.base/unix/native/libjava/jni_util_md.c
Print this page
*** 28,37 ****
--- 28,43 ----
#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,70 ****
}
size_t
getLastErrorString(char *buf, size_t len)
{
- char *err;
- size_t n;
if (errno == 0 || len < 1) return 0;
! err = strerror(errno);
! n = strlen(err);
! if (n >= len)
! n = len - 1;
!
! strncpy(buf, err, n);
! buf[n] = '\0';
! return n;
}
--- 59,74 ----
}
size_t
getLastErrorString(char *buf, size_t len)
{
if (errno == 0 || len < 1) return 0;
+ getErrorString(errno, buf, len);
+ return strlen(buf);
+ }
! int
! getErrorString(int err, char *buf, size_t len)
! {
! if (err == 0 || len < 1) return 0;
! return strerror_r(err, buf, len);
}