Bugfix: Don’t free xinerama-reply if it is NULL, implement FREE()-macro (Thanks Igor)

next
Michael Stapelberg 2009-03-30 08:27:53 +02:00
parent 3164bb7afa
commit fcc5ce516b
2 changed files with 10 additions and 3 deletions

View File

@ -24,6 +24,13 @@
#define FOR_TABLE(workspace) \
for (int cols = 0; cols < workspace->cols; cols++) \
for (int rows = 0; rows < workspace->rows; rows++)
#define FREE(pointer) do { \
if (pointer == NULL) { \
free(pointer); \
pointer = NULL; \
} \
} \
while (0)
/* ##__VA_ARGS__ means: leave out __VA_ARGS__ completely if it is empty, that is,
delete the preceding comma */

View File

@ -206,14 +206,14 @@ void initialize_xinerama(xcb_connection_t *conn) {
xcb_xinerama_is_active_reply_t *reply;
reply = xcb_xinerama_is_active_reply(conn, xcb_xinerama_is_active(conn), NULL);
if (!reply->state) {
if (reply == NULL || !reply->state) {
LOG("Xinerama is not active (in your X-Server), disabling.\n");
free(reply);
FREE(reply);
disable_xinerama(conn);
return;
}
free(reply);
FREE(reply);
query_screens(conn, virtual_screens);