From e52688586a0389b722c28e81f0e9c2e339955d05 Mon Sep 17 00:00:00 2001 From: John Beard Date: Fri, 9 Nov 2018 11:58:38 +0000 Subject: [PATCH] Don't use memset to initialise aggregate of floats. In C3D_RENDER_OGL_LEGACY::setupMaterial(), the struct m_materials (which is made up of floats and glm::vec3f's) is initialised with a memset to 0. This is unsafe, as floating point value representations in C++ are implementation- defined (so 0 in memory is not 0-valued for sure). Use empty-brace aggregate-initialisation, which does the right thing. --- .../3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp index 6498d0f9b1..dc9dd00824 100644 --- a/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp +++ b/3d-viewer/3d_rendering/3d_render_ogl_legacy/c3d_render_ogl_legacy.cpp @@ -175,8 +175,7 @@ void C3D_RENDER_OGL_LEGACY::render_3D_arrows() void C3D_RENDER_OGL_LEGACY::setupMaterials() { - - memset( &m_materials, 0, sizeof( m_materials ) ); + m_materials = {}; if( m_settings.GetFlag( FL_USE_REALISTIC_MODE ) ) {