Don't trust xinerama not to return NULL
authorMikael Magnusson <mikachu@gmail.com>
Sun, 5 Jul 2009 12:22:16 +0000 (14:22 +0200)
committerMikael Magnusson <mikachu@gmail.com>
Sun, 5 Jul 2009 12:22:18 +0000 (14:22 +0200)
We check that xinerama is active already, but someone got a NULL here.

openbox/screen.c

index 4cbed8c58b42e42b8ca6a221130f53550fde21f7..7eda7c370708f3db75950c0c2e4a93fa7f777c26 100644 (file)
@@ -1335,7 +1335,10 @@ typedef struct {
 static void get_xinerama_screens(Rect **xin_areas, guint *nxin)
 {
     guint i;
-    gint l, r, t, b;
+    gint n, l, r, t, b;
+#ifdef XINERAMA
+    XineramaScreenInfo *info;
+#endif
 
     if (ob_debug_xinerama) {
         gint w = WidthOfScreen(ScreenOfDisplay(obt_display, ob_screen));
@@ -1346,10 +1349,8 @@ static void get_xinerama_screens(Rect **xin_areas, guint *nxin)
         RECT_SET((*xin_areas)[1], w/2, 0, w-(w/2), h);
     }
 #ifdef XINERAMA
-    else if (obt_display_extension_xinerama) {
-        guint i;
-        gint n;
-        XineramaScreenInfo *info = XineramaQueryScreens(obt_display, &n);
+    else if (obt_display_extension_xinerama &&
+             (info = XineramaQueryScreens(obt_display, &n))) {
         *nxin = n;
         *xin_areas = g_new(Rect, *nxin + 1);
         for (i = 0; i < *nxin; ++i)