Christian Costa : d3drm: Init vertices before creating group.

Alexandre Julliard julliard at winehq.org
Wed Oct 31 17:17:21 CDT 2012


Module: wine
Branch: master
Commit: 43d3ba36a1c31ffa8f365eaadcccfd727f8a6020
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=43d3ba36a1c31ffa8f365eaadcccfd727f8a6020

Author: Christian Costa <titan.costa at gmail.com>
Date:   Wed Oct 31 09:56:07 2012 +0100

d3drm: Init vertices before creating group.

---

 dlls/d3drm/meshbuilder.c |   30 ++++++++++++------------------
 1 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index 87ff35c..c28cefd 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -2081,6 +2081,18 @@ static HRESULT WINAPI IDirect3DRMMeshBuilder3Impl_CreateMesh(IDirect3DRMMeshBuil
         unsigned* out_ptr;
         DWORD* in_ptr = This->pFaceData;
         int i, j;
+        D3DRMVERTEX* vertices;
+
+        vertices = HeapAlloc(GetProcessHeap(), 0, This->nb_vertices * sizeof(D3DRMVERTEX));
+        if (!vertices)
+        {
+            IDirect3DRMMesh_Release(*mesh);
+            return E_OUTOFMEMORY;
+        }
+        for (i = 0; i < This->nb_vertices; i++)
+            vertices[i].position = This->pVertices[i];
+        hr = IDirect3DRMMesh_SetVertices(*mesh, 0, 0, This->nb_vertices, vertices);
+        HeapFree(GetProcessHeap(), 0, vertices);
 
         face_data = HeapAlloc(GetProcessHeap(), 0, This->face_data_size * sizeof(DWORD));
         if (!face_data)
@@ -2121,25 +2133,7 @@ static HRESULT WINAPI IDirect3DRMMeshBuilder3Impl_CreateMesh(IDirect3DRMMeshBuil
 
         hr = IDirect3DRMMesh_AddGroup(*mesh, This->nb_vertices, This->nb_faces, vertex_per_face, face_data, &group);
         HeapFree(GetProcessHeap(), 0, face_data);
-        if (SUCCEEDED(hr))
-        {
-            D3DRMVERTEX* vertices;
 
-            vertices = HeapAlloc(GetProcessHeap(), 0, This->nb_vertices * sizeof(D3DRMVERTEX));
-            if (vertices)
-            {
-                for (i = 0; i < This->nb_vertices; i++)
-                {
-                    vertices[i].position = This->pVertices[i];
-                }
-                hr = IDirect3DRMMesh_SetVertices(*mesh, 0, 0, This->nb_vertices, vertices);
-                HeapFree(GetProcessHeap(), 0, vertices);
-            }
-            else
-            {
-                hr = E_OUTOFMEMORY;
-            }
-        }
         if (SUCCEEDED(hr))
             hr = IDirect3DRMMesh_SetGroupColor(*mesh, 0, This->color);
         if (SUCCEEDED(hr))




More information about the wine-cvs mailing list