[Bug 27439] Age of Pirates - City of Abandoned Ships crashes while entering the sea

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Nov 1 11:01:26 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=27439

Windom Earle <windomearle at mail.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |windomearle at mail.ru

--- Comment #6 from Windom Earle <windomearle at mail.ru> 2011-11-01 11:01:26 CDT ---
Look like that crash occurs there in memcpy:
http://source.winehq.org/source/dlls/wined3d/buffer.c?v=wine-1.3.31#L901

wine-1.3.31
wined3d
buffer.c

...
/* Now for each vertex in the buffer that needs conversion */
     vertices = buffer->resource.size / buffer->stride;

     data = HeapAlloc(GetProcessHeap(), 0, buffer->resource.size);

     while(buffer->modified_areas)
     {
         buffer->modified_areas--;
         start = buffer->maps[buffer->modified_areas].offset;
         len = buffer->maps[buffer->modified_areas].size;
         end = start + len;

         memcpy(data + start, buffer->resource.allocatedMemory + start, end -
start);
         for (i = start / buffer->stride; i < min((end / buffer->stride) + 1,
vertices); ++i)
         {
             for (j = 0; j < buffer->stride; ++j)
             {
                 switch (buffer->conversion_map[j])
                 {
                     case CONV_NONE:
                         /* Done already */
                         j += 3;
                         break;
                     case CONV_D3DCOLOR:
                         fixup_d3dcolor((DWORD *) (data + i * buffer->stride +
j));
                         j += 3;
                         break;

                     case CONV_POSITIONT:
                         fixup_transformed_pos((float *) (data + i *
buffer->stride + j));
                         j += 15;
                         break;
                     default:
                         FIXME("Unimplemented conversion %d in shifted
conversion\n", buffer->conversion_map[j]);
                 }
             }
         }
...

The reason ... maybe HeapAlloc failed (its result isn't checked in this code)?

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list