[Mesa-dev] Mesa (gles3): mesa/uniform_query: Don' t write to *params if there is an error

Ian Romanick idr at freedesktop.org
Thu Dec 13 03:11:32 PST 2012


On 12/08/2012 11:25 AM, Matt Turner wrote:
> Module: Mesa
> Branch: gles3
> Commit: d7063e8ee25963d08de2cd4d4ba61260c8eca9ca
> URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7063e8ee25963d08de2cd4d4ba61260c8eca9ca
>
> Author: Matt Turner <mattst88 at gmail.com>
> Date:   Fri Dec  7 16:32:30 2012 -0800
>
> mesa/uniform_query: Don't write to *params if there is an error
>
> The GL 3.1 and ES 3.0 specs say of glGetActiveUniformsiv:
>     "If an error occurs, nothing will be written to params."
>
> So, make a pass through the indices and check that they're valid before
> the pass that actually writes to params. Checking pname happens on the
> first iteration of the second loop.
>
> Fixes es3conform's getactiveuniformsiv_for_nonexistent_uniform_indices
> test.
>
> Reviewed-by: Brian Paul <brianp at vmware.com>
> Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

This should just go directly to master too.  Can you do that, and we can 
rebase it out of gles3 soon?  Also, please add

NOTE: This is a candidate for the 9.0 branch.

> ---
>
>   src/mesa/main/uniform_query.cpp |    6 +++++-
>   1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp
> index cbdd39e..245e9a7 100644
> --- a/src/mesa/main/uniform_query.cpp
> +++ b/src/mesa/main/uniform_query.cpp
> @@ -97,12 +97,16 @@ _mesa_GetActiveUniformsiv(GLuint program,
>
>      for (i = 0; i < uniformCount; i++) {
>         GLuint index = uniformIndices[i];
> -      const struct gl_uniform_storage *uni = &shProg->UniformStorage[index];
>
>         if (index >= shProg->NumUserUniformStorage) {
>   	 _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveUniformsiv(index)");
>   	 return;
>         }
> +   }
> +
> +   for (i = 0; i < uniformCount; i++) {
> +      GLuint index = uniformIndices[i];
> +      const struct gl_uniform_storage *uni = &shProg->UniformStorage[index];
>
>         switch (pname) {
>         case GL_UNIFORM_TYPE:
>
> _______________________________________________
> mesa-commit mailing list
> mesa-commit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-commit
>



More information about the mesa-dev mailing list