Excellent-- here's a patch.  What does it show you?
Index: core/edge-resistance.c
===================================================================
--- core/edge-resistance.c      (revision 4070)
+++ core/edge-resistance.c      (working copy)
@@ -229,6 +229,7 @@
   /* Start the search at mid */
   edge = g_array_index (edges, MetaEdge*, mid);
   compare = horizontal ? edge->rect.x : edge->rect.y;
+  meta_warning ("Calling MREA from %d\n", __LINE__);
   edges_align = meta_rectangle_edge_aligns (new_rect, edge);
   if (edges_align &&
       (!only_forward || !points_on_same_side (position, compare, 
old_position)))
@@ -388,6 +389,7 @@
       int       compare = xdir ? edge->rect.x : edge->rect.y;
 
       /* Find out if this edge is relevant */
+      meta_warning ("Calling MREA from %d\n", __LINE__);
       edges_align = meta_rectangle_edge_aligns (new_rect, edge)  ||
                     meta_rectangle_edge_aligns (old_rect, edge);
 
Index: core/boxes.c
===================================================================
--- core/boxes.c        (revision 4070)
+++ core/boxes.c        (working copy)
@@ -1158,7 +1158,12 @@
       return BOX_LEFT (*rect)      <= BOX_RIGHT (edge->rect) &&
              BOX_LEFT (edge->rect) <= BOX_RIGHT (*rect);
     default:
-      g_assert_not_reached ();
+      {
+         char text[30];
+         meta_rectangle_edge_to_string (edge, text);
+         meta_warning ("We would crash here.  Edge is %s.", text);
+         return FALSE;
+      }
     }
 }
 

Reply via email to