Recent versions of libuv functions return -errno on error, older versions don't. For example, here's how uv_sem_init is implemented in libuv v0.11.1 and v0.11.14 respectively:
int uv_sem_init(uv_sem_t* sem, unsigned int value) {
return sem_init(sem, 0, value);
}
int uv_sem_init(uv_sem_t* sem, unsigned int value) {
if (sem_init(sem, 0, value))
return -errno;
return 0;
}
Recent versions of libuv functions return -errno on error, older versions don't. For example, here's how uv_sem_init is implemented in libuv v0.11.1 and v0.11.14 respectively:
Take this into account.