ext/noderb_extension/libuv/src/win/error.c in noderb-0.0.4 vs ext/noderb_extension/libuv/src/win/error.c in noderb-0.0.6
- old
+ new
@@ -65,26 +65,30 @@
*((char*)NULL) = 0xff; /* Force debug break */
abort();
}
-uv_err_t uv_last_error() {
- return LOOP->last_error;
+uv_err_t uv_last_error(uv_loop_t* loop) {
+ return loop->last_error;
}
+/* TODO: thread safety */
+static char* last_err_str_ = NULL;
+
char* uv_strerror(uv_err_t err) {
- if (LOOP->err_str != NULL) {
- LocalFree(LOOP->err_str);
+ if (last_err_str_ != NULL) {
+ LocalFree(last_err_str_);
}
FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err.sys_errno_,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&LOOP->err_str, 0, NULL);
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR) &last_err_str_, 0,
+ NULL);
- if (LOOP->err_str) {
- return LOOP->err_str;
+ if (last_err_str_) {
+ return last_err_str_;
} else {
return "Unknown error";
}
}
@@ -95,19 +99,25 @@
case ERROR_NOACCESS: return UV_EACCESS;
case WSAEACCES: return UV_EACCESS;
case ERROR_ADDRESS_ALREADY_ASSOCIATED: return UV_EADDRINUSE;
case WSAEADDRINUSE: return UV_EADDRINUSE;
case WSAEADDRNOTAVAIL: return UV_EADDRNOTAVAIL;
+ case WSAEAFNOSUPPORT: return UV_EAFNOSUPPORT;
case WSAEWOULDBLOCK: return UV_EAGAIN;
case WSAEALREADY: return UV_EALREADY;
case ERROR_CONNECTION_REFUSED: return UV_ECONNREFUSED;
case WSAECONNREFUSED: return UV_ECONNREFUSED;
case WSAEFAULT: return UV_EFAULT;
+ case ERROR_HOST_UNREACHABLE: return UV_EHOSTUNREACH;
+ case WSAEHOSTUNREACH: return UV_EHOSTUNREACH;
case ERROR_INVALID_DATA: return UV_EINVAL;
case WSAEINVAL: return UV_EINVAL;
case ERROR_TOO_MANY_OPEN_FILES: return UV_EMFILE;
case WSAEMFILE: return UV_EMFILE;
+ case WSAEMSGSIZE: return UV_EMSGSIZE;
+ case ERROR_NETWORK_UNREACHABLE: return UV_ENETUNREACH;
+ case WSAENETUNREACH: return UV_ENETUNREACH;
case ERROR_OUTOFMEMORY: return UV_ENOMEM;
case ERROR_NOT_SUPPORTED: return UV_ENOTSUP;
case ERROR_INSUFFICIENT_BUFFER: return UV_EINVAL;
case ERROR_INVALID_FLAGS: return UV_EBADF;
case ERROR_INVALID_PARAMETER: return UV_EINVAL;
@@ -126,15 +136,15 @@
e.sys_errno_ = sys_errno;
return e;
}
-void uv_set_sys_error(int sys_errno) {
- LOOP->last_error.code = uv_translate_sys_error(sys_errno);
- LOOP->last_error.sys_errno_ = sys_errno;
+void uv_set_sys_error(uv_loop_t* loop, int sys_errno) {
+ loop->last_error.code = uv_translate_sys_error(sys_errno);
+ loop->last_error.sys_errno_ = sys_errno;
}
-void uv_set_error(uv_err_code code, int sys_errno) {
- LOOP->last_error.code = code;
- LOOP->last_error.sys_errno_ = sys_errno;
+void uv_set_error(uv_loop_t* loop, uv_err_code code, int sys_errno) {
+ loop->last_error.code = code;
+ loop->last_error.sys_errno_ = sys_errno;
}