src/java.base/windows/native/libjava/jni_util_md.c
Print this page
*** 106,122 ****
if (utf16_osErrorMsg[n - 1] == L'.') --n;
utf16_osErrorMsg[n] = L'\0';
}
} else if (errno != 0) {
// C runtime error that has no corresponding WIN32 error code
! const WCHAR *rtError = _wcserror(errno);
! if (rtError != NULL) {
! wcsncpy(utf16_osErrorMsg, rtError, cbErrorMsg);
! // truncate if too long
! utf16_osErrorMsg[cbErrorMsg - 1] = L'\0';
n = wcslen(utf16_osErrorMsg);
- }
} else
noError = TRUE; //OS has no error to report
if (!noError) {
if (n > 0) {
--- 106,118 ----
if (utf16_osErrorMsg[n - 1] == L'.') --n;
utf16_osErrorMsg[n] = L'\0';
}
} else if (errno != 0) {
// C runtime error that has no corresponding WIN32 error code
! int ret = _wcserror_s(utf16_osErrorMsg, cbErrorMsg, errno);
! if (ret == 0)
n = wcslen(utf16_osErrorMsg);
} else
noError = TRUE; //OS has no error to report
if (!noError) {
if (n > 0) {
*** 144,149 ****
--- 140,154 ----
}
free(utf16_osErrorMsg);
}
}
return n;
+ }
+
+ int
+ getErrorString(int err, char *buf, size_t len)
+ {
+ int ret = 0;
+ if (err == 0 || len < 1) return 0;
+ ret = strerror_s(buf, len, err);
+ return ret;
}