[PATCH 3/4] d3dx9_36: Cast DWORDs to WORDs when accssing 16 bit index data.

Stefan Dösinger stefan at codeweavers.com
Tue Feb 18 03:46:15 CST 2014


All cases have an explicit check for 16 bit indices.
---
 dlls/d3dx9_36/mesh.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index 118baf7..0a8061f 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -747,7 +747,7 @@ static HRESULT WINAPI d3dx9_mesh_CloneMesh(struct ID3DXMesh *iface, DWORD option
                 ((DWORD*)data_out)[i] = ((WORD*)data_in)[i];
         } else {
             for (i = 0; i < This->numfaces * 3; i++)
-                ((WORD*)data_out)[i] = ((DWORD*)data_in)[i];
+                ((WORD*)data_out)[i] = (WORD)((DWORD*)data_in)[i];
         }
     } else {
         memcpy(data_out, data_in, This->numfaces * 3 * (options & D3DXMESH_32BIT ? 4 : 2));
@@ -1776,9 +1776,9 @@ static HRESULT WINAPI d3dx9_mesh_OptimizeInplace(ID3DXMesh *iface, DWORD flags,
             for (i = 0; i < This->numfaces; i++) {
                 DWORD new_pos = face_remap[i] * 3;
                 DWORD old_pos = i * 3;
-                word_indices[new_pos++] = dword_indices[old_pos++];
-                word_indices[new_pos++] = dword_indices[old_pos++];
-                word_indices[new_pos] = dword_indices[old_pos];
+                word_indices[new_pos++] = (WORD)dword_indices[old_pos++];
+                word_indices[new_pos++] = (WORD)dword_indices[old_pos++];
+                word_indices[new_pos] = (WORD)dword_indices[old_pos];
             }
         }
 
@@ -1794,7 +1794,7 @@ static HRESULT WINAPI d3dx9_mesh_OptimizeInplace(ID3DXMesh *iface, DWORD flags,
         } else {
             WORD *word_indices = indices;
             for (i = 0; i < This->numfaces * 3; i++)
-                *word_indices++ = dword_indices[i];
+                *word_indices++ = (WORD)dword_indices[i];
         }
     }
 
@@ -4360,7 +4360,7 @@ HRESULT WINAPI D3DXLoadMeshFromXInMemory(const void *memory, DWORD memory_size,
             WORD *dest = concat_indices;
             const WORD *src = mesh_indices;
             for (i = 0; i < num_mesh_faces * 3; i++)
-                *dest++ = index_offset + *src++;
+                *dest++ = (WORD)index_offset + *src++;
             concat_indices = dest;
         }
         mesh->lpVtbl->UnlockIndexBuffer(mesh);
@@ -6637,7 +6637,7 @@ static inline void write_ib(void *index_buffer, BOOL indices_are_32bit,
     else
     {
         WORD *indices = index_buffer;
-        indices[index] = value;
+        indices[index] = (WORD)value;
     }
 }
 
-- 
1.8.3.2




More information about the wine-patches mailing list