Ian Romanick <i...@freedesktop.org> writes: > Since this is Curro's code, I'm CC'ing me. > > On 10/01/2014 03:12 AM, Iago Toral Quiroga wrote: >> in_var calls the ir_variable constructor, which dups the variable name. >> --- >> src/glsl/builtin_functions.cpp | 8 +++++--- >> 1 file changed, 5 insertions(+), 3 deletions(-) >> >> diff --git a/src/glsl/builtin_functions.cpp b/src/glsl/builtin_functions.cpp >> index 5a024cb..7d61fcc 100644 >> --- a/src/glsl/builtin_functions.cpp >> +++ b/src/glsl/builtin_functions.cpp >> @@ -4465,9 +4465,11 @@ builtin_builder::_image_prototype(const glsl_type >> *image_type, >> sig->parameters.push_tail(in_var(glsl_type::int_type, "sample")); >> >> /* Data arguments. */ >> - for (unsigned i = 0; i < num_arguments; ++i) >> - sig->parameters.push_tail(in_var(data_type, >> - ralloc_asprintf(NULL, "arg%d", i))); >> + for (unsigned i = 0; i < num_arguments; ++i) { >> + char *arg_name = ralloc_asprintf(NULL, "arg%d", i); >> + sig->parameters.push_tail(in_var(data_type, arg_name)); >> + ralloc_free(arg_name); >> + } > > Using a NULL memory context is generally bad... precisely because it > often leads to memory leaks. > > There are a couple ways to fix this. Since all of the image functions > have a limited number of parameters, we could either: > > - Have a fixed size buffer that we snprintf to. > I think I would also prefer this solution (snprintf'ing to a fixed-size buffer on the stack), but I don't really have any strong objection to this patch as-is:
Reviewed-by: Francisco Jerez <curroje...@riseup.net> > - Have a table of all the parameter names. > > - Since this is the function prototype, I don't think we need names for > the parameters at all. Just pass NULL? > >> /* Set the maximal set of qualifiers allowed for this image >> * built-in. Function calls with arguments having fewer >>
pgpLF3iaaPgcg.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev