Fix recent change to xwindow extra structures.
authorTaylor R Campbell <campbell@mumble.net>
Sun, 21 Mar 2010 19:27:22 +0000 (15:27 -0400)
committerTaylor R Campbell <campbell@mumble.net>
Sun, 21 Mar 2010 19:27:22 +0000 (15:27 -0400)
src/microcode/x11.h
src/microcode/x11base.c
src/microcode/x11graph.c
src/microcode/x11term.c

index 37baacfe85c14df55fbcc2d93b3f569dff4b1926..65bd7bd0052c65e6b0474f8362f703a5058b97fd 100644 (file)
@@ -198,8 +198,6 @@ struct xwindow
   /* The offset we need to add to compensate for type A WMs.  */
   int move_offset_x;
   int move_offset_y;
-
-  void * extra;
 };
 
 #define XW_ALLOCATION_INDEX(xw) ((xw) -> allocation_index)
@@ -326,7 +324,7 @@ extern struct xwindow * x_make_window
    int y_size,
    struct drawing_attributes * attributes,
    struct xwindow_methods * methods,
-   unsigned int extra);
+   unsigned int size);
 
 extern void xw_set_wm_input_hint (struct xwindow * xw, int input_hint);
 extern void xw_set_wm_name (struct xwindow * xw, const char * name);
index f59c3533adb897311bb7067112f045cffc9884e4..52709a040d7e419a6c06aa2838d0e2c428033a62 100644 (file)
@@ -569,7 +569,7 @@ x_make_window (struct xdisplay * xd,
               int y_size,
               struct drawing_attributes * attributes,
               struct xwindow_methods * methods,
-              unsigned int extra)
+              unsigned int size)
 {
   GC normal_gc;
   GC reverse_gc;
@@ -591,9 +591,9 @@ x_make_window (struct xdisplay * xd,
      background_pixel);
   XDefineCursor (display, window, mouse_cursor);
   XSelectInput (display, window, 0);
-  xw
-    = (x_malloc (((sizeof (struct xwindow)) - (sizeof (xw->extra)))
-                + extra));
+  if (size < (sizeof (struct xwindow)))
+    error_external_return ();
+  xw = (x_malloc (size));
   (XW_ALLOCATION_INDEX (xw)) = (allocate_table_index ((&x_window_table), xw));
   (XW_XD (xw)) = xd;
   (XW_WINDOW (xw)) = window;
index 2cefdde2f398d88d403e242b32c45ef1ef4aa86f..30cde37f430f04732a13d0774925d22b1288af86 100644 (file)
@@ -45,7 +45,13 @@ struct gw_extra
   int y_cursor;
 };
 
-#define XW_EXTRA(xw) ((struct gw_extra *) ((xw) -> extra))
+struct xwindow_graphics
+{
+  struct xwindow xw;
+  struct gw_extra extra;
+};
+
+#define XW_EXTRA(xw) (& (((struct xwindow_graphics *) xw) -> extra))
 
 #define XW_X_LEFT(xw) ((XW_EXTRA (xw)) -> x_left)
 #define XW_X_RIGHT(xw) ((XW_EXTRA (xw)) -> x_right)
@@ -370,7 +376,7 @@ If third argument SUPPRESS-MAP? is true, do not map the window immediately.")
        struct xwindow * xw =
          (x_make_window
           (xd, window, x_size, y_size, (&attributes), (&methods),
-           (sizeof (struct gw_extra))));
+           (sizeof (struct xwindow_graphics))));
        (XW_X_LEFT (xw)) = ((float) (-1));
        (XW_X_RIGHT (xw)) = ((float) 1);
        (XW_Y_BOTTOM (xw)) = ((float) (-1));
index 8f8725095c4b141a94ff1e1aff3de7ad0c4323d5..35c0fa4987b732f642522bd0196dbb151ae5558b 100644 (file)
@@ -55,7 +55,13 @@ struct xterm_extra
   char cursor_enabled_p;
 };
 
-#define XW_EXTRA(xw) ((struct xterm_extra *) ((xw) -> extra))
+struct xwindow_term
+{
+  struct xwindow xw;
+  struct xterm_extra extra;
+};
+
+#define XW_EXTRA(xw) (& (((struct xwindow_term *) xw) -> extra))
 
 #define XW_X_CSIZE(xw) ((XW_EXTRA (xw)) -> x_size)
 #define XW_Y_CSIZE(xw) ((XW_EXTRA (xw)) -> y_size)
@@ -534,7 +540,7 @@ DEFINE_PRIMITIVE ("XTERM-OPEN-WINDOW", Prim_xterm_open_window, 3, 3, 0)
           (y_size - (size_hints->base_height)),
           (&attributes),
           (&methods),
-          (sizeof (struct xterm_extra))));
+          (sizeof (struct xwindow_term))));
     (XW_X_CSIZE (xw)) = x_csize;
     (XW_Y_CSIZE (xw)) = y_csize;
     (XW_CURSOR_X (xw)) = 0;