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