diff --git a/src/api/sockets.c b/src/api/sockets.c index 0528ac44..290a7b73 100644 --- a/src/api/sockets.c +++ b/src/api/sockets.c @@ -87,9 +87,12 @@ static int err_to_errno_table[11] = { EADDRINUSE /* ERR_USE -10 Address in use. */ }; +#define ERR_TO_ERRNO_TABLE_SIZE \ + (sizeof(err_to_errno_table)/sizeof(err_to_errno_table[0])) + #define err_to_errno(err) \ - ((err) < (sizeof(err_to_errno_table)/sizeof(int))) ? \ - err_to_errno_table[-(err)] : EIO + (-(err) >= 0 && -(err) < ERR_TO_ERRNO_TABLE_SIZE ? \ + err_to_errno_table[-(err)] : EIO) #ifdef ERRNO #define set_errno(err) errno = (err)