[Mesa-dev] [PATCH] mesa: fix segfault in glUniformSubroutinesuiv()
Jason Ekstrand
jason at jlekstrand.net
Sun Jan 17 08:27:12 PST 2016
On Jan 16, 2016 9:15 PM, "Timothy Arceri" <timothy.arceri at collabora.com>
wrote:
>
> From Section 7.9 (SUBROUTINE UNIFORM VARIABLES) of the OpenGL
> 4.5 Core spec:
>
> "The command
>
> void UniformSubroutinesuiv(enum shadertype, sizei count,
> const uint *indices);
>
> will load all active subroutine uniforms for shader stage
> shadertype with subroutine indices from indices, storing
> indices[i] into the uniform at location i. The indices for
> any locations between zero and the value of
> ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS minus one which are not
> used will be ignored."
>
> Cc: "11.0 11.1" mesa-stable at lists.freedesktop.org
> https://bugs.freedesktop.org/show_bug.cgi?id=93731
> ---
> src/mesa/main/shaderapi.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
> index cdc85f3..918c5f9 100644
> --- a/src/mesa/main/shaderapi.c
> +++ b/src/mesa/main/shaderapi.c
> @@ -2530,6 +2530,13 @@ _mesa_UniformSubroutinesuiv(GLenum shadertype,
GLsizei count,
> i = 0;
> do {
> struct gl_uniform_storage *uni =
sh->SubroutineUniformRemapTable[i];
> + if (uni == NULL) {
> + if (++i < count)
> + continue;
> + else
> + break;
Just
i++;
continue;
Will do the same thing and without repeating the looping condition or
making the user think about pre- vs. post-increment. I guess it does make
them think about continues in a do-while, but you can't win everything. :-)
> + }
> +
> int uni_count = uni->array_elements ? uni->array_elements : 1;
> int j, k;
>
> @@ -2557,6 +2564,13 @@ _mesa_UniformSubroutinesuiv(GLenum shadertype,
GLsizei count,
> i = 0;
> do {
> struct gl_uniform_storage *uni =
sh->SubroutineUniformRemapTable[i];
> + if (uni == NULL) {
> + if (++i < count)
> + continue;
> + else
> + break;
> + }
> +
> int uni_count = uni->array_elements ? uni->array_elements : 1;
>
> memcpy(&uni->storage[0], &indices[i],
> --
> 2.4.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20160117/ae7aad01/attachment-0001.html>
More information about the mesa-dev
mailing list