http://bugs.winehq.org/show_bug.cgi?id=17005
--- Comment #8 from John Haywards normandy@web.de 2009-01-21 13:06:24 --- (In reply to comment #6)
Created an attachment (id=18867)
--> (http://bugs.winehq.org/attachment.cgi?id=18867) [details]
patch
Does this patch make any difference?
Yes: Program now enters a infinite loop... (always jumping at "goto")
... it looks like native ddraw doesn't set lpSurface to NULL when GetAttachedSurface() fails, while Wine's implementation does. Could you verify native ddraw leaves lpSurface unchanged in this case?
In Windows, I debugged it: lpSurface never gets NULL. Only "GetAttachedSurface" modifies it.
Adding this line: --- int test=SUCCEEDED(lpSurface->GetAttachedSurface( &ddsCaps, &lpSurface )); if (test) lpSurface->Release(); --- "test" is always "1" when running the normal way.