http://bugs.winehq.org/show_bug.cgi?id=5056
Summary: [ddraw/dsurface/main.c] LPRECT parameters for Main_DirectDrawSurface_Lock Product: Wine Version: 0.9.11. Platform: Other URL: http://www.winehq.com/hypermail/wine- devel/2005/02/0363.html OS/Version: other Status: UNCONFIRMED Severity: normal Priority: P2 Component: wine-directx-ddraw AssignedTo: wine-bugs@winehq.org ReportedBy: nospam@thenerdshow.com
"the game tries to lock a surface with width and/or height equal to zero.the game tries to lock a surface with width and/or height equal to zero."
I've re-produced this bug by installing "Feeding Frenzy 2" from Pop Cap Games today.
err:ddraw:Main_DirectDrawSurface_Lock Invalid values in LPRECT !!! err:ddraw:Main_DirectDrawSurface_Lock Invalid values in LPRECT !!!
The patch:
--- dlls/ddraw/dsurface/main.c 2005-01-09 18:35:44.000000000 +0100 +++ dlls/ddraw/dsurface/main.c 2005-02-14 21:03:36.511738080 +0100 @@ -1111,8 +1111,8 @@ (prect->left < 0) || (prect->bottom < 0) || (prect->right < 0) || - (prect->left >= prect->right) || - (prect->top >= prect->bottom) || + (prect->left > prect->right) || + (prect->top > prect->bottom) || (prect->left >= This->surface_desc.dwWidth) || (prect->right > This->surface_desc.dwWidth) || (prect->top >= This->surface_desc.dwHeight) ||
reportedly works around the problem, but is not a solution. Your mission, should you choose to accept it, is to find an actual solution, instead of this crude workaround.
This quote, from the mailing list url (above):
"This patch won't be applied. The things to do is to write a test case and run it under Windows. Once the exact behaviour is determined, a proper fix can be written. Also note that the data in LPRECT may has been corrupted at some point. The problem is thus elsewhere.
Bye, Christian"
Any help with writing a test case would be appreciated. Thanks.