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;
 }