[Mesa-dev] [PATCH] glsl: avoid leaking hiddenUniforms map when there are no uniforms

Ilia Mirkin imirkin at alum.mit.edu
Fri Oct 2 11:00:38 PDT 2015


On Fri, Oct 2, 2015 at 2:51 AM, Iago Toral <itoral at igalia.com> wrote:
> On Thu, 2015-10-01 at 20:22 -0400, Ilia Mirkin wrote:
>> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
>> ---
>>  src/glsl/link_uniforms.cpp | 8 ++++----
>>  1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
>> index 47d49c8..740b0a4 100644
>> --- a/src/glsl/link_uniforms.cpp
>> +++ b/src/glsl/link_uniforms.cpp
>> @@ -1131,15 +1131,15 @@ link_assign_uniform_locations(struct gl_shader_program *prog,
>>     const unsigned num_data_slots = uniform_size.num_values;
>>     const unsigned hidden_uniforms = uniform_size.num_hidden_uniforms;
>>
>> +   /* assign hidden uniforms a slot id */
>> +   hiddenUniforms->iterate(assign_hidden_uniform_slot_id, &uniform_size);
>> +   delete hiddenUniforms;
>> +
>>     /* On the outside chance that there were no uniforms, bail out.
>>      */
>>     if (num_uniforms == 0)
>>        return;
>>
>> -   /* assign hidden uniforms a slot id */
>> -   hiddenUniforms->iterate(assign_hidden_uniform_slot_id, &uniform_size);
>> -   delete hiddenUniforms;
>> -
>
> I suppose there is no much gain in simply adding the delete statement
> right before the return...

That was my feeling as well -- the simplicity of having a single
delete seems to outweigh the modest overhead of iterating over an
empty hashtable.

Ideally we'd just use a scoped_ptr (RAII object that deletes ptr on
delete), but it's been too long for me to remember what is in what
version of what standard and I didn't want to get into that game.

>
> Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
>
>
>>     struct gl_uniform_storage *uniforms =
>>        rzalloc_array(prog, struct gl_uniform_storage, num_uniforms);
>>     union gl_constant_value *data =
>
>


More information about the mesa-dev mailing list