int xcb_popcount(uint32_t mask)
{
- unsigned long y;
+ uint32_t y;
y = (mask >> 1) & 033333333333;
y = mask - y - ((y >> 1) & 033333333333);
return ((y + (y >> 3)) & 030707070707) % 077;
static int _xcb_open_tcp(char *host, const unsigned short port)
{
int fd = -1;
- struct addrinfo hints = { AI_ADDRCONFIG
+ struct addrinfo hints = { 0
+#ifdef AI_ADDRCONFIG
+ | AI_ADDRCONFIG
+#endif
#ifdef AI_NUMERICSERV
| AI_NUMERICSERV
#endif
if(fd == -1)
return (xcb_connection_t *) &error_connection;
- _xcb_get_auth_info(fd, &auth);
- c = xcb_connect_to_fd(fd, &auth);
- free(auth.name);
- free(auth.data);
+ if(_xcb_get_auth_info(fd, &auth, display))
+ {
+ c = xcb_connect_to_fd(fd, &auth);
+ free(auth.name);
+ free(auth.data);
+ }
+ else
+ c = xcb_connect_to_fd(fd, 0);
return c;
}