June 23, 2010
8:40 a.m.
Am Dienstag 22 Juni 2010 23:37:20 schrieb Iain Arnell:
--- a/dlls/wined3d/surface_base.c +++ b/dlls/wined3d/surface_base.c @@ -1657,6 +1657,11 @@ HRESULT WINAPI IWineD3DBaseSurfaceImpl_BltFast(IWineD3DSurface *iface, DWORD dst lock_dst.right = dstx + w; lock_dst.bottom = dsty + h;
+ if ( lock_dst.left < 0 || lock_dst.top < 0 ) { + WARN("Application gave us bad desitination offset for BltFast.\n"); + return WINEDDERR_INVALIDRECT; + } You're catching only the GDI surface case here since opengl surfaces don't use IWineD3DBaseSurfaceImpl_BltFast. I recommend to put this check into ddraw, like in your previous attempts(but keep checking for < 0, don't do any bit testing magic like in your old patches)