Use substitition variables in xcb-xinerama.pc.in, not instances of their values
[free-sw/xcb/libxcb] / src / xcb_util.c
index ef8300f..eeee1dd 100644 (file)
@@ -49,7 +49,7 @@ static const int error_connection = 1;
 
 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;
@@ -176,7 +176,10 @@ static int _xcb_open_decnet(const char *host, const unsigned short port)
 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
@@ -238,10 +241,14 @@ xcb_connection_t *xcb_connect(const char *displayname, int *screenp)
     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;
 }