src/java.base/windows/native/libjava/jni_util_md.c
Print this page
@@ -106,17 +106,13 @@
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';
+ 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,6 +140,15 @@
}
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;
}