Am Montag 12 März 2007 06:04 schrieb Erich Hoover:
> I'm looking into a problem that causes Supreme Commander to segfault (Bug
> #7643 <http://bugs.winehq.org/show_bug.cgi?id=7643>) and I believe I may
> have run into a problem with IWineD3DSurfaceImpl_LockRect.  I believe the
>
> problem is a typo in the line:
> > This->resource.allocatedMemory = HeapAlloc(GetProcessHeap() ,0 , This->
> > resource.size + 4);
>
> I think that the allocated memory should be the size of the resource
> multiplied by 4 (instead of adding 4).  With the current allocation, for
> some textures, the operation to calculate the pBits location returns a
> memory address that is past the end of the allocated memory. So, after this
No, it should definitly be + 4. This->resource.size is supposed to contain the 
full surface. The + 4 is because old applications use DWORD-Aligned access to 
palettized textures and write up to 3 bytes beyond the surface.

So either the size calculation is broken, or something in LockRect

Attachment: pgp9hYW73YXz3.pgp
Description: PGP signature



Reply via email to