CARD16 length;
} XCBSetupGeneric;
+static const int error_connection = 1;
+
static int set_fd_flags(const int fd)
{
long flags = fcntl(fd, F_GETFL, 0);
const XCBSetup *XCBGetSetup(XCBConnection *c)
{
+ if(c->has_error)
+ return 0;
/* doesn't need locking because it's never written to. */
return c->setup;
}
int XCBGetFileDescriptor(XCBConnection *c)
{
+ if(c->has_error)
+ return -1;
/* doesn't need locking because it's never written to. */
return c->fd;
}
c = calloc(1, sizeof(XCBConnection));
if(!c)
- return 0;
+ return (XCBConnection *) &error_connection;
c->fd = fd;
))
{
XCBDisconnect(c);
- return 0;
+ return (XCBConnection *) &error_connection;
}
return c;
void XCBDisconnect(XCBConnection *c)
{
- if(!c)
+ if(c->has_error)
return;
free(c->setup);