Jacek Caban (@jacek) commented about dlls/user32/tests/msg.c:
SetRectRgn( hrgn_old_vis, rect_old_vis.left, rect_old_vis.top, rect_old_vis.right, rect_old_vis.bottom );IntersectRect( &rect_new_vis, &rect_new, &rect_parent_clip );SetRectRgn( hrgn_new_vis, rect_new_vis.left, rect_new_vis.top, rect_new_vis.right, rect_new_vis.bottom );if (!EqualRect( &rect_old, &rect_new ) || is_zorder_redraw){CombineRgn( hrgn_expect, hrgn_old_vis, hrgn_new_vis, is_composited ? RGN_OR : RGN_DIFF );}else{SetRectRgn( hrgn_expect, 0, 0, 0, 0 );}rgn_equal = EqualRgn( hrgn_expect, hrgn_actual );if (!rgn_equal && broken( has_parentdc_anomaly && is_composited &&LOBYTE(LOWORD(GetVersion())) < 8 ) /* Win7 */)
Please don't use GetVersion() in tests. Also, working around broken behavior is not really useful if we're not interested in results anyway. You may just win_skip() those cases.