Ticket #7395 (closed defect: fixed)
glGetVertexAttrib[if]v returns superfluous data -> memory corruption -> Fixed in SVN
|Reported by:||kuroneko||Owned by:|
Host: Windows Vista, guest: Windows XP/SP3 with guest additions 3.2.8r64453
I'm aware that 3D support is experimental but so far I did't have any issues apart from the memory corruption caused by glGetVertexAttrib[if]v.
This function allows for 7 different name parameters:
GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING GL_VERTEX_ATTRIB_ARRAY_ENABLED GL_VERTEX_ATTRIB_ARRAY_SIZE GL_VERTEX_ATTRIB_ARRAY_STRIDE GL_VERTEX_ATTRIB_ARRAY_TYPE GL_VERTEX_ATTRIB_ARRAY_NORMALIZED GL_CURRENT_VERTEX_ATTRIB
The first 6 return a *single* GLint/GLfloat, the last one returns 4. What I experience is that the first 6 names return 4 parameters as well (the real one and garbage), therefore corrupting program variable/stack info which usually kills my program. This does not happen when running natively under Vista or XP.
As a side note, using GL_CURRENT_VERTEX_ATTRIB for index 0 should fail.
I'll attach a modified NeHe lesson (#6) which issues the relevant call (around line 200) and asserts when too much data is returned.
- Summary changed from glGetVertexAttrib[if]v returns superfluous data -> memory corruption to glGetVertexAttrib[if]v returns superfluous data -> memory corruption -> Fixed in SVN