From: Brian Paul Date: Wed, 2 Jul 2008 22:40:24 +0000 (-0600) Subject: mesa: fix error codes in _mesa_shader_source(), _mesa_get_shader_source() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=36a582641119671688a9f366e5bfa1ab3e8b9cbc;p=mesa.git mesa: fix error codes in _mesa_shader_source(), _mesa_get_shader_source() If the 'shader' parameter is wrong, need to either generate GL_INVALID_VALUE or GL_INVALID_OPERATION. It depends on whether 'shader' actually names a 'program' or is a totally unknown ID. There might be other cases to fix... --- diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index c9eec7f07ee..c77d0c43973 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -875,7 +875,12 @@ _mesa_get_shader_source(GLcontext *ctx, GLuint shader, GLsizei maxLength, { struct gl_shader *sh = _mesa_lookup_shader(ctx, shader); if (!sh) { - _mesa_error(ctx, GL_INVALID_VALUE, "glGetShaderSource(shader)"); + GLenum err; + if (_mesa_lookup_shader_program(ctx, shader)) + err = GL_INVALID_OPERATION; + else + err = GL_INVALID_VALUE; + _mesa_error(ctx, err, "glGetShaderSource(shader)"); return; } copy_string(sourceOut, maxLength, length, sh->Source); @@ -966,7 +971,12 @@ _mesa_shader_source(GLcontext *ctx, GLuint shader, const GLchar *source) { struct gl_shader *sh = _mesa_lookup_shader(ctx, shader); if (!sh) { - _mesa_error(ctx, GL_INVALID_VALUE, "glShaderSource(shaderObj)"); + GLenum err; + if (_mesa_lookup_shader_program(ctx, shader)) + err = GL_INVALID_OPERATION; + else + err = GL_INVALID_VALUE; + _mesa_error(ctx, err, "glShaderSource(shaderObj)"); return; }