ping?
On Thu, Dec 22, 2011 at 4:34 PM, nob...@dreamwidth.org wrote: > The error was erroneously removed in this commit: > > 719909698c67c287a393d2380278e7b7495ae018 > "mesa: Rewrite the way uniforms are tracked and handled" > > You also aren't even supposed to truncate the output to 'bufSize', > so just return like before. > > Also fixup an old comment and add an assert. > --- > (This function has a random mixture of tabs+spaces and pure spaces for > indentation, so I had no idea which style to use...) > > src/mesa/main/uniform_query.cpp | 16 ++++++++++++---- > src/mesa/main/uniforms.c | 2 +- > 2 files changed, 13 insertions(+), 5 deletions(-) > > diff --git a/src/mesa/main/uniform_query.cpp b/src/mesa/main/uniform_query.cpp > index 33ba53c..8e58fc0 100644 > --- a/src/mesa/main/uniform_query.cpp > +++ b/src/mesa/main/uniform_query.cpp > @@ -203,10 +203,18 @@ _mesa_get_uniform(struct gl_context *ctx, GLuint > program, GLint location, > const union gl_constant_value *const src = > &uni->storage[offset * elements]; > > - unsigned bytes = sizeof(uni->storage[0]) * elements; > - if (bytes > (unsigned) bufSize) { > - elements = bufSize / sizeof(uni->storage[0]); > - bytes = bufSize; > + assert(returnType == GLSL_TYPE_FLOAT || returnType == GLSL_TYPE_INT || > + returnType == GLSL_TYPE_UINT); > + /* The three (currently) supported types all have the same size, > + * which is of course the same as their union. That'll change > + * with glGetUniformdv()... > + */ > + unsigned bytes = sizeof(src[0]) * elements; > + if (bufSize < 0 || bytes > (unsigned) bufSize) { > + _mesa_error( ctx, GL_INVALID_OPERATION, > + "glGetnUniformfvARB(out of bounds: bufSize is %d," > + " but %u bytes are required)", bufSize, bytes ); > + return; > } > > /* If the return type and the uniform's native type are "compatible," > diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c > index 685c0f1..981874e 100644 > --- a/src/mesa/main/uniforms.c > +++ b/src/mesa/main/uniforms.c > @@ -478,7 +478,7 @@ _mesa_GetnUniformdvARB(GLhandleARB program, GLint > location, > (void) params; > > /* > - _mesa_get_uniform(ctx, program, location, bufSize, GL_DOUBLE, params); > + _mesa_get_uniform(ctx, program, location, bufSize, > GLSL_TYPE_DOUBLE, params); > */ > _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformdvARB" > "(GL_ARB_gpu_shader_fp64 not implemented)"); > -- > 1.7.4.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev