mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-10 21:10:16 +01:00
mesa: Ensure that length is set to zero in _mesa_GetProgramBinary
v2: Fix assignment of length. Noticed by Julien Cristau.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87516
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Acked-by: Leight Bade <leith@mapbox.com>
(cherry picked from commit 4fd8b30123)
This commit is contained in:
parent
e1b5bc9330
commit
f1663a5236
1 changed files with 20 additions and 6 deletions
|
|
@ -1682,16 +1682,35 @@ _mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length,
|
|||
GLenum *binaryFormat, GLvoid *binary)
|
||||
{
|
||||
struct gl_shader_program *shProg;
|
||||
GLsizei length_dummy;
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetProgramBinary");
|
||||
if (!shProg)
|
||||
return;
|
||||
|
||||
/* The ARB_get_program_binary spec says:
|
||||
*
|
||||
* "If <length> is NULL, then no length is returned."
|
||||
*
|
||||
* Ensure that length always points to valid storage to avoid multiple NULL
|
||||
* pointer checks below.
|
||||
*/
|
||||
if (length != NULL)
|
||||
length = &length_dummy;
|
||||
|
||||
|
||||
/* The ARB_get_program_binary spec says:
|
||||
*
|
||||
* "When a program object's LINK_STATUS is FALSE, its program binary
|
||||
* length is zero, and a call to GetProgramBinary will generate an
|
||||
* INVALID_OPERATION error.
|
||||
*/
|
||||
if (!shProg->LinkStatus) {
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION,
|
||||
"glGetProgramBinary(program %u not linked)",
|
||||
shProg->Name);
|
||||
*length = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1700,12 +1719,7 @@ _mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length,
|
|||
return;
|
||||
}
|
||||
|
||||
/* The ARB_get_program_binary spec says:
|
||||
*
|
||||
* "If <length> is NULL, then no length is returned."
|
||||
*/
|
||||
if (length != NULL)
|
||||
*length = 0;
|
||||
*length = 0;
|
||||
|
||||
(void) binaryFormat;
|
||||
(void) binary;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue