[Mesa-dev] [PATCH] mesa: fix segfault in glUniformSubroutinesuiv()
Dave Airlie
airlied at gmail.com
Sun Jan 17 00:18:48 PST 2016
On 17 January 2016 at 15:15, 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."
Looks good, but will this not generate warnings on pre-C99?
(not sure we care).
Otherwise:
Reviewed-by: Dave Airlie <airlied at redhat.com>
Dave.
>
> 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;
> + }
> +
> 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
More information about the mesa-dev
mailing list