diff --git a/src/xpdev/multisock.c b/src/xpdev/multisock.c
index d893be4a3d7f3c80a92849be23fddf426421f1a2..676c5ed74fdb460c5dc8d5badcd9a6729cccf03a 100644
--- a/src/xpdev/multisock.c
+++ b/src/xpdev/multisock.c
@@ -362,6 +362,8 @@ SOCKET DLLCALL xpms_accept(struct xpms_set *xpms_set, union xp_sockaddr * addr,
 				if(FD_ISSET(xpms_set->socks[i].sock, &read_fs)) {
 #else
 	fds = calloc(xpms_set->sock_count, sizeof(*fds));
+	if (fds == NULL)
+		return INVALID_SOCKET;
 	for (i = 0; i < xpms_set->sock_count; i++) {
 		if (xpms_set->socks[i].sock == INVALID_SOCKET)
 			continue;