diff --git a/test/meshviewer.cpp b/test/meshviewer.cpp
index e4ba9e7e..e8ce6370 100644
--- a/test/meshviewer.cpp
+++ b/test/meshviewer.cpp
@@ -268,8 +268,8 @@ public:
         //Target List Setup
         Array<vec3> target_list;
         if (m_meshes.Count() && m_mesh_id >= 0)
-            for (int i = 0; i < m_meshes[m_mesh_id].GetVertexCount(); i++)
-                target_list << (m_mat * mat4::translate(m_meshes[m_mesh_id].GetVertexLocation(i))).v3.xyz;
+            for (int i = 0; i < m_meshes[m_mesh_id]->GetVertexCount(); i++)
+                target_list << (m_mat * mat4::translate(m_meshes[m_mesh_id]->GetVertexLocation(i))).v3.xyz;
 
         //--
         //Update mesh screen location - Get the Min/Max needed
@@ -337,9 +337,11 @@ public:
                 if (m_mesh_id == m_meshes.Count() - 1)
                     m_mesh_id++;
                 //Create a new mesh
-                EasyMesh tmp;
-                if (tmp.Compile(mesh.C()))
+                EasyMesh* tmp = new EasyMesh();
+                if (tmp->Compile(mesh.C()))
                     m_meshes.Push(tmp);
+                else
+                    delete(tmp);
             }
         }
 
@@ -437,20 +439,20 @@ public:
         for (int i = 0; i < m_meshes.Count(); i++)
         {
             {
-                if (m_meshes[i].GetMeshState() == MeshRender::NeedConvert)
+                if (m_meshes[i]->GetMeshState() == MeshRender::NeedConvert)
                 {
 #if WITH_TEXTURE
-                    m_meshes[i].MeshConvert(new DefaultShaderData(((1 << VertexUsage::Position) | (1 << VertexUsage::Normal) |
+                    m_meshes[i]->MeshConvert(new DefaultShaderData(((1 << VertexUsage::Position) | (1 << VertexUsage::Normal) |
                                                                        (1 << VertexUsage::Color)    | (1 << VertexUsage::TexCoord)),
                                                                        m_texture_shader, true));
 #else
-                    m_meshes[i].MeshConvert();
+                    m_meshes[i]->MeshConvert();
 #endif //WITH_TEXTURE
                 }
                 mat4 save_proj = m_camera->GetProjection();
                 float j = -(float)(m_meshes.Count() - (i + 1)) + (-m_mesh_id1 + (float)(m_meshes.Count() - 1));
 
-                if (m_meshes[i].GetMeshState() > MeshRender::NeedConvert)
+                if (m_meshes[i]->GetMeshState() > MeshRender::NeedConvert)
                 {
                     mat4 new_proj =
                         //Y object Offset
@@ -466,7 +468,7 @@ public:
                         //Camera projection
                         save_proj;
                     m_camera->SetProjection(new_proj);
-                    m_meshes[i].Render(m_mat);
+                    m_meshes[i]->Render(m_mat);
                     g_renderer->Clear(ClearMask::Depth);
                 }
                 m_camera->SetProjection(save_proj);
@@ -499,7 +501,7 @@ private:
     //Mesh infos
     int     m_mesh_id;
     float   m_mesh_id1;
-    Array<EasyMesh> m_meshes;
+    Array<EasyMesh*> m_meshes;
 
     //File data
     String        m_file_name;